LoginSignup
1
1

More than 5 years have passed since last update.

[jrubyfx] NameError: cannot load Java class com.sun.javafx.Loggingの回避

Last updated at Posted at 2015-12-02

注意

この情報はすでに陳腐化した。
Windows10 64bitにおいて、

  • jdk-8u121
  • jruby 9.1.7.0
  • jrubyfx 1.1.1

の環境でjrubyfxが動作することを確認している。

前置き

以下、Windows7 64bitにおいて、

  • jdk-8u40
  • jruby 1.17.16.1
  • jrubyfx 1.1.1

の環境では、jrubyfxが動いていた。

ところが、jdkとjrubyをアップデートしたところ、
下のエラーが発生して、jrubyfxを使用したプログラムが動かなくなってしまった。

NameError: cannot load Java class com.sun.javafx.Logging
          for_name at org/jruby/javasupport/JavaClass.java:1286
   get_proxy_class at org/jruby/javasupport/JavaUtilities.java:34
       java_import at file:/C:/jruby-1.7.18/lib/jruby.jar!/jruby/java/core_ext/object.rb:27
               map at org/jruby/RubyArray.java:2412

調査

どうも、Javaのインテグレーションに伴うjrubyの問題なようだ。
https://github.com/jruby/jrubyfx/issues/95
https://github.com/jruby/jruby/issues/3366

jrubyfxが動くjdkとjrubyのバージョンは

jruby 1.7.16.1を固定し、jrubyfxが動作するJDKのバージョンを調査した。

結果 バージョン
NameError 8u60, 8u66
無事に動作した 8u51とそれ以前

次に、jdk-8u51を固定し、jrubyfxが動作するjrubyのバージョンを調査した。

結果 バージョン
無事に動作した 1.7.18とそれ以前
警告(※1) 1.7.19 - 1.7.22
別のエラー(※2) 9.0.0.0 - 9.0.4.0

※1

io/console not supported; tty will not be manipulated

https://github.com/jruby/jruby/issues/2944
https://github.com/asciidoctor/asciidoctorj/issues/401

※2

Exception running Application:
\#<NameError: uninitialized constant Java::JavafxStage::Stage::Scene>
C:/jruby-9.0.4.0/lib/ruby/gems/shared/gems/jrubyfx-1.1.1-java/lib/jrubyfx/core_ext/stage.rb:75:in `layout_scene'

結論

jrubyfxを使用するなら、2015/12/02現在、

  • jdk-8u51
  • jruby 1.7.18
  • jrubyfx 1.1.1

で使用すること。
最新版のjdkが入っている環境に配布するにはどうすればいいんだろう。
あんまり話題になっていないところから考えて、みなさん、あまりjrubyfx使ってないのかな。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1