【发布时间】:2013-12-29 04:18:17
【问题描述】:
我正在使用 warbler 用 ruby 类构建一个 jar,以便它可以作为交互式应用程序运行。现在,我想将该 jar 用作我的 java 应用程序中的库。我注意到,warbler 生成的 jar 包含使用 jrubyc 编译的 ruby 类,而没有 --javac 选项。那么有谁知道如何使用 warbler 生成一个 jar,以便它可以作为独立应用程序运行,也可以用作 Java 项目中的库,以便可以在 Java 中创建 ruby 类的对象?
以下是我的 ruby 代码的结构:
core
|--- lib
|----a.rb
|----b.rb
|---java_lib
a.rb 内容:
require 'b'
class A
def test
ob=b.new
puts ob.test
end
end
b.rb 内容:
class B
def test
puts "test"
end
end
然后,我使用warbler创建了一个jar,将一个jar放在另一个java项目的类路径中并尝试访问a.test。但它说“无法加载--b”
【问题讨论】:
-
“要求代码的问题必须证明对正在解决的问题有最低限度的了解。包括尝试的解决方案、为什么它们不起作用以及预期的结果。另请参阅:Stack Overflow question checklist"
-
目前我无法在 java 中使用 jar 中的 ruby 类。我正在想办法给他们打电话。为此,我相信我编译的 ruby 类应该与 java 兼容,这可以使用“jrubyc”和“--javac”作为选项。但我不知道如何在 warbler 中传递这些选项,以便最终 jar 可以作为独立运行,也可以用作 java 应用程序中的库。如果您需要莺配置或任何特定的东西,请告诉我。目前我没有任何实现,因为我正在寻找如何使其工作。
-
来自 jrubyc 的帮助:
--javac Generate and compile .java classes to accompany the script。通过快速测试,此选项会同时创建.class和.java文件。您出于某种原因需要.java文件吗?您能否修改您的问题以准确包含您需要的缺失内容? -
@shepmaster 好的。下面是我的 ruby 代码的结构:
core |--- lib |---java_lib |----a.rb |----b.rb |----bina.rb 内容:require 'b' class A def test ob=b.new puts ob.test end endb.rb 内容:class B def test puts "test" end end然后,我使用 warbler 创建了上面的 jar,将 jar 放在另一个 java 项目的类路径中并尝试访问 a.test。但它说“无法加载--b” -
您的最后一条评论似乎与您的other question 相同,我已经在那里回答了。您能解释一下为什么需要通过
--javac选项吗?此外,由于格式不理想,您的最后一条评论作为对问题的编辑会更好。