1

Java 半分と Ruby 半分で構成されるプログラムがあります。Java半分をjarにコンパイルすると、すべてが機能します。生の .class ファイルだけを持っている場合、ruby は を参照できますがSimpleStringProperty、Java を参照する Java クラスを参照すると、次のようになりSimpleStringPropertyます。

LoadError: load error: designer -- java.lang.NoClassDefFoundError: javafx/beans/property/SimpleStringProperty

javafx を参照する 1 つの Java ファイル、javafx を参照しない 1 つの Java ファイル、および次の内容の ruby​​ ファイルの 3 つのファイルに減らすことができました。

require 'jrubyfx' # requires ruby javafx bindings
require 'my.jar' # I ommit this line when using the raw .class files
p Java::javafx.beans.property.SimpleStringProperty
p Java::mypackage.NoJavaFX
p Java::mypackage.RefJavaFX

cwd で jar を使用して実行すると、次のように実行されjruby -I . main.rb、次のように出力されます。

Java::JavafxBeansProperty::SimpleStringProperty
Java::Mypackage::NoJavaFX
Java::Mypackage::RefJavaFX

ただし、 $CWD/mypackage/ as の .class ファイルで実行すると、次のjruby -I . main.rbように出力されます。

Java::JavafxBeansProperty::SimpleStringProperty
Java::Mypackage::NoJavaFX
Class.java:-2:in `getDeclaredMethods0': java.lang.NoClassDefFoundError: javafx/beans/property/SimpleStringProperty
    from Class.java:2451:in `privateGetDeclaredMethods'
    from Class.java:1810:in `getDeclaredMethods'
    from JavaClass.java:2089:in `getMethods'
    from JavaClass.java:989:in `setupClassMethods'
    from JavaClass.java:97:in `access$700'
    from JavaClass.java:653:in `initialize'
    from JavaClass.java:694:in `setupProxy'
    from Java.java:574:in `createProxyClass'
    from Java.java:502:in `createProxyClassForClass'
    from JavaSupport.java:154:in `computeValue'
...snip...
Caused by:
URLClassLoader.java:366:in `run': java.lang.ClassNotFoundException: javafx.beans.property.SimpleStringProperty
    from URLClassLoader.java:355:in `run'
    from AccessController.java:-2:in `doPrivileged'
    from URLClassLoader.java:354:in `findClass'
    from ClassLoader.java:423:in `loadClass'
    from Launcher.java:308:in `loadClass'
    from ClassLoader.java:356:in `loadClass'
    from Class.java:-2:in `getDeclaredMethods0'
    from Class.java:2451:in `privateGetDeclaredMethods'
    from Class.java:1810:in `getDeclaredMethods'
    from JavaClass.java:2089:in `getMethods'
    from JavaClass.java:989:in `setupClassMethods'
    from JavaClass.java:97:in `access$700'
    ...snip...

2つの宇宙があると信じさせてくれる

これを修正するために何をすべきか迷っています。大変助かりました。

4

0 に答える 0