编译jruby“Hello world”问题

时间:2009-12-17 12:36:04

标签: compilation jruby

我用Ruby编程了一段时间,我真的很喜欢它。最近我开始需要编译一些ruby代码。有几个原因使用Ruby2exe不是我的选择。所以我决定试试Jruby(生成一个罐子就足够了)。

我使用的是Windows,我安装了java JDK 6u17(在C:\ Program Files \ Java \ jdk1.6.0_17)。

我在C:\ jruby

安装了jruby 1.4

我在java中创建了一个hello world,编译并执行它就好了(所以java工作正常)。

我创建了一个文件“script.rb”,其中包含:

puts "Hello, world"

我用jruby运行这个程序:

jruby script.rb

它运作正常。

我确实将JAVA_HOME设置为C:\ Program Files \ Java \ jdk1.6.0_17

我也成功运行:

java -jar c:\jruby\lib\jruby.jar script.rb

然后我用命令编译:

jruby -S jrubyc script.rb

它生成类'script.class'

我的问题是我发现无法正确执行script.class

我试试:

java -cp .:c:\jruby\lib\jruby.jar script

我收到错误消息:

Exception in thread "main" java.lang.NoClassDefFoundError: script
Caused by: java.lang.ClassNotFoundException: script
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: script.  Program will exit.

我也尝试将jruby-complete-1.4.0.jar复制到本地目录以及其他几个选项。

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:10)

假设您在Windows上,我认为您的-cp arg是错误的:它应该是以分号分隔的:

java -cp .;c:\jruby\lib\jruby.jar script

但是,通过单独设置CLASSPATH env,我有更好的运气,例如:


C:\ruby>set CLASSPATH=c:\Program Files\jruby-1.4.0\lib\jruby.jar;

C:\ruby>java hello_world
Hello, world!

但也许那是因为我的classpath需要一个空格。

您使用的是什么版本的JRuby?如你所见,我在1.4。