我用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复制到本地目录以及其他几个选项。
任何人都知道我做错了什么?
答案 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。