fbl*_*dun 8 ruby java jruby warbler rvm
我使用Warbler从我的Ruby源创建一个Jar文件.我也安装了RVM.jar的行为取决于RVM使用的Ruby版本:如果我rvm use jruby
然后jar工作正常,但如果我rvm use 2.2
然后运行jar将这些警告消息打印到控制台:
Ignoring executable-hooks-1.3.2 because its extensions are not built. Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.2.7 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.2.7
Run Code Online (Sandbox Code Playgroud)
如果我rvm use ruby-1.9.3-p484
然后运行jar实际上失败了:
Ignoring unf_ext-0.0.7.1 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.1
Ignoring nokogiri-1.6.2.1 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.2.1
Ignoring nokogiri-1.6.6.2 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.6.2
Ignoring nokogiri-1.6.6.2 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.6.2
Ignoring executable-hooks-1.3.2 because its extensions are not built. Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.2.7 because its extensions are not built. Try: gem pristine gem-wrappers --version 1.2.7
Ignoring nokogiri-1.6.2.1 because its extensions are not built. Try: gem pristine nokogiri --version 1.6.2.1
Ignoring unf_ext-0.0.7.1 because its extensions are not built. Try: gem pristine unf_ext --version 0.0.7.1
NameError: uninitialized constant Nokogiri::XERCES_VERSION
const_missing at org/jruby/RubyModule.java:2733
to_hash at /vagrant/myproject!/gems/nokogiri-1.6.6.2-java/lib/nokogiri/version.rb:73
...
Run Code Online (Sandbox Code Playgroud)
如果我在没有安装rvm的计算机上运行jar,它可以正常工作.
造成这种情况的原因是什么,以及如何阻止RVM干扰我的jar?
这不仅仅是 RVM 的问题,系统 Ruby 安装也可能会产生干扰......取消设置GEM_HOME
和GEM_PATH
环境变量,以便它们不被使用。
如果它是 .war,您还可以尝试通过嵌入 JRuby 完全隔离,以使用jruby.runtime.env=false
系统属性(或应用程序上下文初始化参数)使用空 ENV 启动 Ruby 运行时
对于打包的 .jar 档案,请使用config.override_gem_home(也应该与 .war 一起使用)