我需要将我的JRuby应用程序编译为一个独立的JAR文件。如何实现?
我需要将我的JRuby应用程序编译为一个独立的JAR文件。如何实现?
Warbler 1.3.0 或更新版本也可以用于制作可执行的JAR文件。
快速指南。请确保您在此处使用JRUBY的gem等:
$ gem install warbler
$ mkdir bin
$ cat <<EOF > bin/myapp
#!/usr/bin/env jruby
puts "Hello World"
EOF
$ chmod a+x bin/myapp
$ warble jar
现在您应该在当前目录中拥有一个名为 myapp.jar
的文件。根据 README
,您只需要在 lib
目录中添加所需的任何库,并使用 .gemspec
或 Gemfile
来控制需要放入 .jar
文件中的其他gems。
james@gealach:/tmp/fnx$ cat my_foo.rb class Foo def bar(a, b) puts a + b end end james@gealach:/tmp/fnx$ ~/jruby/bin/jrubyc --javac my_foo.rb 将Java类Foo生成到C:/cygwin/tmp/fnx/Foo.java javac -d C:/cygwin/tmp/fnx -cp C:/cygwin/home/james/jruby/lib/jruby.jar;. C:/cygwin/tmp/fnx/Foo.java james@gealach:/tmp/fnx$ ls Foo.class Foo.java my_foo.rb james@gealach:/tmp/fnx$ javap.exe Foo Compiled from "Foo.java" public class Foo extends org.jruby.RubyObject{ public static org.jruby.runtime.builtin.IRubyObject __allocate__(org.jruby.Ruby, org.jruby.RubyClass); public Foo(); public java.lang.Object bar(java.lang.Object, java.lang.Object); static {}; }
你可以将jar的入口点设置为org.jruby.JarBootstrapMain,然后添加一个jar-bootstrap.rb文件。
运行脚本的方法:
JRuby网站提供了一个可运行的JAR文件,您可以在JRuby下载页面上获取。您需要完整的JRuby JAR文件。然后,您可以通过以下方式运行应用程序
java -jar jruby-complete-1.4.0.jar <script>
我相信你也可以从源代码构建相同的JAR文件。在下载的源代码中执行以下操作:
ant --projecthelp
将 Ruby 脚本完全嵌入 JAR 文件中:在 Java 中嵌入 JRuby 是一个很好的起点。您可能需要解压 jruby-complete.jar
文件,添加您的 Java 主类,该主类要么调用 JRuby 脚本,要么将 Ruby 代码嵌入其中,将清单文件的主类替换为指向您的新入口点,并重新打包。