如何使用jruby

时间:2018-01-12 10:14:14

标签: jruby desktop-application setup-deployment

我创建了一个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,我希望它能够运行。请指导我。有人可以分享我在这里可以做的事情

0 个答案:

没有答案