2009-12-17 110 views
5

我一直在用Ruby編程一段時間,我非常喜歡它。最近我開始需要編譯一些ruby代碼。由於幾個原因,使用Ruby2exe不適合我。所以我決定給Jruby一個嘗試(生成一個jar就足夠了)。編譯jruby「Hello world」問題

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

我在安裝到C的JRuby 1.4:\ JRuby的

我用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

非常感謝這個問題。我一直在尋找如何做到這一點:'jruby -S jrubyc腳本。rb',但所有我能找到的是ruby2java頁面(http://kenai.com/projects/ruby2java/pages/Home),這意味着不得不在Ruby中使用類,即使這樣我得到了這兩個錯誤** 1 ** http://kenai.com/jira/browse/JVMSCRIPT-7 ** 2 ** http://kenai.com/projects/ruby2java/lists/issues/archive/2009-09/message/0 – atomicules 2010-01-21 14:51:57

回答

9

假設你使用的是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! 

但也許這是因爲我的類路徑需要一個空間。

您使用的是哪個版本的JRuby?正如你所看到的,我在1.4。

+0

完美作品!謝謝羅布。我知道這是我錯過的一些小細節,因爲我遵循了所有步驟。 – Edu 2009-12-18 11:14:17