在Jruby中使用自定义Java类文件

时间:2010-06-30 21:18:00

标签: jruby jruby-java-interop

我试图通过最新版本的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上的解决方案,但仍然得到了相同的结果。我想知道这可能是一个更深层次的问题。

4 个答案:

答案 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)

答案 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文件部分