【问题标题】:Using Custom Java Class file in Jruby在 Jruby 中使用自定义 Java 类文件
【发布时间】:2011-03-10 08:52:56
【问题描述】:

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

【问题讨论】:

    标签: jruby jruby-java-interop


    【解决方案1】:

    所以这对我有用,我拥有人们建议的所有必需的东西,但我真正需要的是

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

    在 java_import 语句之前

    所以在文件系统中,如果你的类在文件夹中

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

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

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

    【讨论】:

      【解决方案2】:

      你试过include Java吗?

      查看更多详情:http://blogs.oracle.com/coolstuff/entry/using_java_classes_in_jruby

      【讨论】:

        【解决方案3】:

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

        require 'java'
        java_import com.package.MyClass
        

        更多讨论请参见JRuby: import vs include vs java_import vs include_class。为什么你应该使用 'java_import' 而不仅仅是 'import'

        【讨论】:

        • 这个解决方案仍然对我不起作用。我是否需要以某种方式编译自定义类以使其加载?
        • 我在该 wiki 链接中添加了更多示例,以防万一。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多