Java 在Ruby中导入.jar文件:如何使用该类
下面是我的jruby文件Java 在Ruby中导入.jar文件:如何使用该类,java,ruby,jar,import,jruby,Java,Ruby,Jar,Import,Jruby,下面是我的jruby文件test.rb require 'java' require 'jruby.jar' java_import 'jruby.Jruby' puts "This is coming from Ruby." 这是我的Java代码: package jruby; import javax.swing.JOptionPane; public class Jruby { public static void main(String[] args) {
test.rb
require 'java'
require 'jruby.jar'
java_import 'jruby.Jruby'
puts "This is coming from Ruby."
这是我的Java代码:
package jruby;
import javax.swing.JOptionPane;
public class Jruby {
public static void main(String[] args) {
String s = "This is coming from Java!";
JOptionPane.showMessageDialog(null, s);
}
}
当我使用命令运行jruby时
jruby test.rb
我得到的唯一结果是
this is coming from Ruby.
如何从Java类启动以执行Jar文件中的代码?当我尝试添加以下内容时:
var = new Jruby()
这给了我一个错误:
NoMethodError: undefined method `Jruby' for main:Object
编辑
试过这个,也没用。包名为foo
,类名为foo
require 'java'
require 'foo.jar'
java_import 'foo.Foo'
puts "This is coming from Ruby."
foo.Foo.main()
这导致了以下错误:
NameError: undefined local variable or method 'foo' for main:Object (root) at test.rb
在Meier的帮助下工作的最终文件
require 'java'
require 'foo.jar'
java_import 'javax.swing.JOptionPane'
puts "This is coming from Ruby."
import 'foo.Foo'
Java::foo::Foo.hello()
hello()
是包含Java代码的类。在jruby中,您可以通过包名和类名访问Java类。
看
java主方法是静态的,因此不需要new
。所以这应该行得通
jruby.Jruby.main()
但是我建议重命名java类和包。您可能会遇到名称冲突,因为jruby中的某些内容可能也被称为jruby
。
而且名称是错误的,因为它是一个java类而不是jruby类
编辑:
查阅文档后,上述内容仅适用于标准java包。有几种方法可以访问java类:
com.foo
中,或者编写一个额外的方法来访问包:
def edu
Java::Edu
end
然后您可以使用常见的Java包名称,如
edu.abc.def.ClassName“
您需要确保不在ruby文件中编写java语法,比如新的Jruby()这给了我一个错误NameError:main:对象的未定义局部变量或方法“jruby”。我会按照你的建议改名字,但我不认为这是问题的原因。你怎么认为?谢谢。在用一个新名称创建了一个新类之后,我仍然得到了相同的错误。。那么,问题是什么呢?请查看我的新test.rb文件(添加到问题中)