我有一个由 java 一半和 ruby 一半组成的程序。当我将 java 的一半编译为 jar 时,一切正常。当我只有原始的 .class 文件时,ruby 可以引用SimpleStringProperty
,但是当我引用引用SimpleStringProperty
java 的 java 类时:
LoadError: load error: designer -- java.lang.NoClassDefFoundError: javafx/beans/property/SimpleStringProperty
我已经能够将其缩减为三个文件:一个引用 javafx 的 java 文件,一个不引用 javafx 的 java 文件,以及一个包含以下内容的 ruby 文件:
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...
这让我相信有两个宇宙
我不知道该怎么做才能解决这个问题。非常感谢帮助。