我试图通过最新版本的Jruby(1.5.1),Ruby 1.8.7,使用Java 1.6.0_06执行一些自定义Java代码。我已经尝试了类文件并将其放入JAR方法中。当我尝试时

require 'java'  
require 'path_to_class/myClass

或者

require 'java'  
require 'path_to_jar/a_jar.jar  

尝试这两种方法,我都无法访问myClass或JAR文件中的任何其他文件。导入Java类的网络上的其他变化导致以下错误:

`NameError: cannot load Java class com.package.myClass from C:/jruby-1.5.1/lib/ruby/site_ruby/shared/builtin/javasupport/java.rb:51:in method_missing`

我还检查了Stackoverflow上的解决方案,但我仍然得到相同的结果。我想知道这可能是更深层次的问题。

有帮助吗?

解决方案

而不是“要求”,而是要“ java_import”。

require 'java'
java_import com.package.MyClass

jruby:导入vs包括vs vs java_import vs incress_class 有关更多讨论,例如为什么您应该使用'java_import'而不是仅仅是“导入”

其他提示

如果您有Java课程 com.mypackage.MyClass 在同一文件夹中或在ClassPath上存在的文件夹中,您可以从Jruby脚本中调用它:

require 'java'
import com.pack.MyClass

myClass = MyClass.new

如果课堂在罐子里,您必须 require 罐子:

require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass

myClass = MyClass.new

如果 myjar.jar 在班级路径上,您可以使用 require 'myjar.jar'.

你试过了吗 include Java?

有关更多详细信息,请参阅此信息: http://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby

因此,这是对我有用的,我都需要人们建议的东西,但是我真正需要的是

$CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")

在java_import语句之前

因此,在文件系统中,如果您的班级在文件夹中

Rails.root/path/to/dotClassFolder/folder/anotherFolder/MyClass.class

包括 $CLASSPATH << (Rails.root.to_s + "/path/to/dotClassFolder")然后 java_import "folder.anotherFolder.MyClass"

来自.class文件 部分 https://github.com/jruby/jruby/wiki/callingjavafromjruby

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top