我创建了一个JRuby桌面应用程序。现在我需要在不同的平台上安装(Windows,Linux,Mac)。任何人都可以帮助我
使用jruby创建安装文件或可执行文件的无痛方法。我用谷歌搜索和尝试使用RubyScript2exe,OCRA,但这些都没有成功(真的不太了解)。我是一个noobie ..我真的需要它......
编辑 - 尝试一种简单的方法,因为jrubyc可以创建java等效的类文件(described here)
从包装开始,我创建了一个HelloWorld.rb。以下是文件
require 'jruby/core_ext'
swingClasses = %w(JFrame JPanel JPopupMenu JMenuItem
BorderFactory JLabel JTree JTextField Box JList
JComboBox ImageIcon BoxLayout JPasswordField
JButton SwingConstants border.LineBorder
)
swingClasses.each {|swc| java_import "javax.swing.#{swc}"}
awtClasses = %w(Color Dimension EventQueue event.ActionListener
event.ActionEvent event.MouseAdapter)
awtClasses.each {|awc| java_import "java.awt.#{awc}"}
class HelloWorld < JFrame
def initialize
super "welcome"
main_panel = JPanel.new
main_panel.setLayout BoxLayout.new main_panel, BoxLayout::Y_AXIS
top_panel = JPanel.new
top_panel.setLayout nil
top_panel.setBackground Color.green
main_panel.add top_panel
self.add main_panel
self.pack
self.setDefaultCloseOperation JFrame::EXIT_ON_CLOSE
self.setSize 800,700
self.setVisible true
end
end
HelloWorld.new
使用以下命令运行文件:jruby HelloWorld.rb
。此外,我设法使用:jar cvfe HelloWorld.jar HelloWorld HelloWorld.class
创建.jar文件,其中.class文件使用:jrubyc HelloWorld.rb
但是当我使用:java -jar HelloWorld.jar
运行jar时,我收到以下错误。
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/ParseResult
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.jruby.ParseResult
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
请告诉我如何解决这个问题......
修改 这被发现是因为缺少额外的文件或类文件。在jruby安装中找不到任何名为org.jruby.ParseResult的文件/ jar。我们如何知道需要为应用程序添加所有文件,因为我没有使用任何特定的库。如果安装了JRE,我希望它能够运行。请指导我。有人可以分享我在这里可以做的事情