1

在尝试将 JRuby/Rails 应用程序部署到 Weblogic 10.3 (Solaris Zone) 容器时,它总是遇到以下异常:

org.jruby.rack.RackInitializationException: library `fcntl' could not be loaded: java.lang.NullPointerException
from /xyz/war/WEB-INF/gems/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:239:in `require'
from /xyz/war/WEB-INF/gems/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:225:in `load_dependency'
from /xyz/war/WEB-INF/gems/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:596:in `new_constants_in'
from /xyz/war/WEB-INF/gems/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:225:in `load_dependency'
from /xyz/war/WEB-INF/gems/gems/activesupport-3.0.6/lib/active_support/dependencies.rb:239:in `require'
from /xyz/war/WEB-INF/gems/gems/jruby-openssl-0.7.3/lib/openssl/ssl.rb:19:in `(root)'
from org/jruby/RubyKernel.java:1038:in `require'
[..snip...]

它只是不明白为什么 JRuby 无法加载这个核心库。它似乎与 Solaris 相关,因为在 MacOS X 上安装 WLS 并在本地部署工作没有任何问题。

任何提示或指针,我接下来可以查看 - 或如何解决此问题?

更新: 可能是一个错误(在 IRC/#jruby 中获得反馈,现在在 JRuby JIRA 中跟踪,请参阅:http: //jira.codehaus.org/browse/JRUBY-5753

4

2 回答 2

0

我在使用 Tomcat 7 和 Jruby 1.7.2 的 Centos 5 和 OSX 上遇到了这个问题。和一个 sqlite3 数据库。我通过四处寻找解决了这个问题,我不知道为什么我做了什么解决了它,但我发现了一些事情:我在重新启动 Tomcat 后遇到了这个错误,因为之前的崩溃导致数据库被锁定。ActiveRecord::StatementInvalid(Java::JavaLang::Error:_syscall() 中的内部错误:SELECT "urls".* FROM "urls"):

以下步骤似乎解决了这个问题,但在我看来,原始错误只是表明数据库进入了错误状态。-我将 Jruby 降级到 1.7.1 -我从 gemfile 中删除了所有与 db 相关的 gem,除了 activerecord-jdbcsqlite3-adapter'。这似乎解决了这个问题。(我删除的 gem 是 'sqlite-ruby','sqlite3','activerecord-jdbc-adapter', 'jruby-rack')我注意到这里的第一个 gem 是一个普通的 C gem,它不应该被部署因为它是有条件的,但无论如何似乎都被莺加入了战争。无论如何,我重新部署并且它工作,即使使用原始数据库。

于 2013-02-18T21:45:29.577 回答
0

我通过添加 , 来强制使用 32 位 JVM 解决了这个-d32问题JAVA_OPTS

于 2011-05-22T09:13:01.220 回答