Rawr创建的jar抛出ClassDefNotFoundError

时间:2010-10-14 16:35:09

标签: jruby executable-jar

我正在尝试使用Rawr将一个简单的3文件Ruby项目转换为可在Ubuntu上运行的可执行jar。我运行jruby -S rawr install来创建Rakefile并设置目录布局。我的所有.rb文件都位于项目根目录的src目录下。当我运行jruby -S rake rawr:jar时,它会编译所有Ruby文件并创建jar就好了。然后将其与deploy一起放在我的lib/java/jruby-complete.jar目录中。

我尝试使用deployjava -jar hg_analyzer.jar内执行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文件。

使用-verbose选项运行java会显示 找到JRuby jar并从预期位置加载它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

想出来!问题是Rawr正在下载JRuby运行时的1.5版,我的系统上有1.4版的编译器。