在 ruby 中导入和使用 java class
Importing and using a java class in ruby
我有一个 ruby 文件,其中包含我的 ruby 项目的所有必要 java_imports
。该文件(名为 java_import.rb
)位于 lib/app/wrapper_classes/java_import.rb
.
我的 java 类 位于 lib/app/gallery/*.java
,在 package gallery;
。
我试过include_package "gallery"
和include_class gallery.ThumbnailFileChooser
,但我觉得我缺少关键知识。
这是我如何在 ruby project
中包含 java librairies
的示例。
module Awt
java_import javax.swing.JButton
java_import javax.swing.JFileChooser
end
所以问题是:如何为我的 类 做同样的事情?
提前致谢。
我首先建议将您的 类 打包到 typical java fashion 中的 jar
文件中。然后你可以简单地添加 require "myjar.jar"
到你的 JRuby 脚本并使用你的 类 就像你正在做的 javax.swing
类.
如果由于某种原因您不能这样做,apparently you can include .class
直接按如下方式提交:
Let's say I have 'myclass.class' which has a class called 'myclass' in
'mypackage.myclass'. This causes two problems because JRuby doesn't
like non-Camelcased classes (because Modules have to have cap-Alpha
starts I think).
First, create a directory (under lib/ for example - though not
necessary) called mypackage and put myclass.class in there.
Then this should work:
require 'java'
$CLASSPATH << 'lib'
myclass = JavaUtilities.get_proxy_class('mypackage.myclass')
@myclass = myclass.new
我有一个 ruby 文件,其中包含我的 ruby 项目的所有必要 java_imports
。该文件(名为 java_import.rb
)位于 lib/app/wrapper_classes/java_import.rb
.
我的 java 类 位于 lib/app/gallery/*.java
,在 package gallery;
。
我试过include_package "gallery"
和include_class gallery.ThumbnailFileChooser
,但我觉得我缺少关键知识。
这是我如何在 ruby project
中包含 java librairies
的示例。
module Awt
java_import javax.swing.JButton
java_import javax.swing.JFileChooser
end
所以问题是:如何为我的 类 做同样的事情?
提前致谢。
我首先建议将您的 类 打包到 typical java fashion 中的 jar
文件中。然后你可以简单地添加 require "myjar.jar"
到你的 JRuby 脚本并使用你的 类 就像你正在做的 javax.swing
类.
如果由于某种原因您不能这样做,apparently you can include .class
直接按如下方式提交:
Let's say I have 'myclass.class' which has a class called 'myclass' in 'mypackage.myclass'. This causes two problems because JRuby doesn't like non-Camelcased classes (because Modules have to have cap-Alpha starts I think).
First, create a directory (under lib/ for example - though not necessary) called mypackage and put myclass.class in there.
Then this should work:
require 'java' $CLASSPATH << 'lib'
myclass = JavaUtilities.get_proxy_class('mypackage.myclass')
@myclass = myclass.new