😸

WSL上でのJRuby環境のセットアップ方法

2024/01/25に公開

概要: この記事では、Windows Subsystem for Linux (WSL) 上でJRubyの開発環境をセットアップする手順について説明します。

前提条件

  • Windows 10 または Windows 11 にWSLが既にインストールされていること。
  • Linuxディストリビューション(例:Ubuntu)がWSL上で実行されていること。

Java 8へのダウングレードの理由

  • JRubyの一部のバージョンでは、新しいJavaバージョンのセキュリティ機能によって問題が発生することがあります。Java 8を使用することで、これらのセキュリティ関連の問題を回避できます。

Java 8のインストール手順

  1. Java 8のインストール:

    sudo apt update
    sudo apt install openjdk-8-jdk
    
  2. 必要に応じてJavaバージョンの切り替え:

    sudo update-alternatives --config java
    
    • リストからJava 8を選択します。
  3. Javaバージョンの再確認:

    java -version
    
    • Java 8が正しく設定されていることを確認します。

JRubyのインストール手順

  1. JRubyのダウンロード:

    wget https://repo1.maven.org/maven2/org/jruby/jruby-dist/9.2.11.1/jruby-dist-9.2.11.1-bin.tar.gz
    
  2. JRubyの解凍とセットアップ:

    tar -xzvf jruby-dist-9.2.11.1-bin.tar.gz
    export PATH=$PATH:~/jruby-9.2.11.1/bin
    
  3. JRubyの確認:

    jruby -v
    

JRubyでの gem build コマンド実行時のエラー例と解決策

$ gem build logstash-mixin-http_client.gemspec
2024-01-25T15:05:51.197+09:00 [main] WARN FilenoUtil : Native subprocess control requires open access to sun.nio.ch
Pass '--add-opens java.base/sun.nio.ch=org.jruby.dist' or '=org.jruby.core' to enable.
ERROR:  Loading command: build (LoadError)
        load error: rubygems/security -- java.lang.reflect.InaccessibleObjectException: Unable to make field private java.security.Provider java.security.MessageDigest.provider accessible: module java.base does not "opens java.security" to unnamed module @53311681
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass
  • Javaのセキュリティ機能に関連するエラーは、Java 8を使用することで解決可能です。

まとめ

この記事では、WSL上でJRubyの環境をセットアップする方法を説明しました。Java 8へのダウングレードにより、セキュリティ関連の問題を回避し、JRubyの安定した環境を確保することが可能です。

Discussion