4

我正在尝试通过最新版本的 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

4 回答 4

8

而不是'require',你想要'java_import'。

require 'java'
java_import com.package.MyClass

有关更多讨论,请参阅JRuby:import vs include vs java_import vs include_class,例如为什么应该使用“java_import”而不是“import”

于 2011-02-05T01:41:03.447 回答
1

如果您com.mypackage.MyClass在同一个文件夹或类路径中存在的文件夹中有 Java 类,则可以从 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'.

于 2011-02-05T01:22:07.023 回答
0

你试过了include Java吗?

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

于 2010-07-08T14:42:47.093 回答
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"

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

于 2014-09-23T19:20:00.497 回答