在Jruby中使用自定义Java类文件
-
01-10-2019 - |
题
我试图通过最新版本的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