2011-03-31 36 views
0

我将JRuby嵌入到JAR文件中,它正在被部署到WebSphere的EAR文件使用。当我从我的工作区调用类,它工作正常,但是当我把它里面的WebSphere,这里就是我得到:JRuby加载路径搞砸了

[3/31/11 11:21:15:984 BRT] 00000042 SystemErr  R classpath:/lib/xmlcompare.rb:4:in `require': no such file to load -- rubygems (LoadError) 
    from classpath:/lib/xmlcompare.rb:4 
    from classpath:/lib/xmlcompare.rb:1:in `require' 
    from <script>:1 

经过一番研究,我发现,当我运行从JAR文件中的代码在命令行中,loadpath看起来是这样的:

lib 
lib/gems/builder-3.0.0/lib 
lib/gems/rainbow-1.1.1/lib 
lib/gems/syntax-1.0.0/lib 
lib/gems/xml-simple-1.0.14/lib 
file:/C:/RSA/workspace/sdops-XmlCompare/pkg/XmlCompare.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8 
file:/C:/RSA/workspace/sdops-XmlCompare/pkg/XmlCompare.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared 
file:/C:/RSA/workspace/sdops-XmlCompare/pkg/XmlCompare.jar!/META-INF/jruby.home/lib/ruby/1.8 
. 

然而,JAR部署到WebSphere(与EAR捆绑在一起)之后,这里的loadpath的样子:

lib 
lib/gems/builder-3.0.0/lib 
lib/gems/rainbow-1.1.1/lib 
lib/gems/syntax-1.0.0/lib 
lib/gems/xml-simple-1.0.14/lib 
C:/WINDOWS/TEMP//lib/ruby/site_ruby/1.8 
C:/WINDOWS/TEMP//lib/ruby/site_ruby/shared 
C:/WINDOWS/TEMP//lib/ruby/1.8 
. 

我试图加荷兰国际集团几个条目到loadpath:

使其成为:

lib 
lib/gems/builder-3.0.0/lib 
lib/gems/rainbow-1.1.1/lib 
lib/gems/syntax-1.0.0/lib 
lib/gems/xml-simple-1.0.14/lib 
META-INF/lib/ruby/site_ruby/1.8 
META-INF/lib/ruby/site_ruby/shared 
META-INF/lib/ruby/1.8 
C:/WINDOWS/TEMP//lib/ruby/site_ruby/1.8 
C:/WINDOWS/TEMP//lib/ruby/site_ruby/shared 
C:/WINDOWS/TEMP//lib/ruby/1.8 
. 

但是这并没有做任何改变。

您是否有任何线索知道为什么在WebSphere内部运行时加载路径受到破坏以及如何修复它?

回答

3

尝试添加以下到$ LOAD_PATH:

META-INF/jruby.home/lib/ruby/site_ruby/1.8 
META-INF/jruby.home/lib/ruby/site_ruby/shared 
META-INF/jruby.home/lib/ruby/1.8