我试图通过最新版本的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上的解决方案,但仍然得到了相同的结果。我想知道这可能是一个更深层次的问题。
答案 0 :(得分:6)
而不是'require',你需要'java_import'。
require 'java'
java_import com.package.MyClass
有关详情,请参阅JRuby: import vs include vs java_import vs include_class,例如为什么你应该使用'java_import'而不仅仅是'import'
答案 1 :(得分:0)
你试过include Java
吗?
详情请见http://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby
答案 2 :(得分:0)
如果您在同一文件夹中或类路径中的文件夹中有Java类com.mypackage.MyClass
,则可以从JRuby脚本中调用它,如下所示:
require 'java'
import com.pack.MyClass
myClass = MyClass.new
如果课程在jar中,则必须require
jar:
require 'java'
require '/path/to/myjar.jar'
import com.pack.MyClass
myClass = MyClass.new
如果myjar.jar
位于类路径上,则可以使用require 'myjar.jar'
。
答案 3 :(得分:0)
所以这对我有用,我所有人都需要的东西,但我真正需要的是
$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"
见
来自。{3}}
的.class文件部分