2010-10-14 61 views
0

我正在嘗試使用Rawr將一個簡單的3文件Ruby項目轉換爲可在Ubuntu上運行的可執行jar。我運行jruby -S rawr install來創建Rakefile並設置目錄佈局。我所有的.rb文件位於項目根目錄下的src目錄下。當我運行jruby -S rake rawr:jar時,它編譯了所有的Ruby文件並創建了一個很好的jar。然後將它與一起放入我的deploy目錄中。Rawr創建的jar拋出ClassDefNotFoundError

我嘗試從deployjava -jar hg_analyzer.jar執行罐子。然而,當我這樣做,我迎接這個錯誤:

Exception in thread "main" <script>:1:in `require': Linkage error loading compiled script; you may need to recompile 'file:/home/marcw/Documents/hg_analyzer/deploy/jar/hg_analyzer.jar!/main.class': java.lang.NoClassDefFoundError: org/jruby/ast/executable/AbstractScript$RuntimeCache (LoadError) 
    from <script>:1 
    ...internal jruby stack elided... 
    from Kernel.require(<script>:1) 
    from (unknown).(unknown)(:1) 

我也試着運行它作爲java -cp lib/java/** -jar hg_analyzer.jar,但無濟於事。 jar的清單文件中的Class-Path條目看起來也不錯。 main.rb是主要的Ruby文件。

運行java與-verbose選項顯示它找到JRuby jar並從預期的位置加載它。

任何想法?

回答

0

想通了!問題在於Rawr正在下載JRuby運行時版本1.5,並且我的系統上有1.4版本的編譯器。