Bibliothèque fcntl » ne peut pas être chargé sur Solaris / Weblogic (JRuby 1.6.1) -> NullPointerException
Question
Tout en essayant de déployer un JRuby / Rails Application à un conteneur Weblogic 10.3 (zone Solaris) rencontre toujours cette exception:
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...]
Il ne comprennent tout simplement pas pourquoi JRuby ne se charge cette bibliothèque de base. Il semble en quelque sorte lié Solaris À, parce que l'installation WLS sur Mac OS X et le déploiement fonctionne localement sans problème.
Les conseils ou des pointeurs où je peux regarder à côté - ou comment résoudre ce problème
Mise à jour: Probablement un bug (reçu des commentaires sur IRC / # JRuby maintenant suivi dans JRuby JIRA, consultez: http: // jira.codehaus.org/browse/JRUBY-5753
La solution
Je résolu ce problème en ajoutant -d32
à JAVA_OPTS
, pour forcer l'utilisation d'une machine virtuelle Java 32 bits.
Autres conseils
Je connaissait ce problème sur CentOS 5 et Mac OS X avec Tomcat 7 et JRuby 1.7.2. et un sqlite3 db. Je résolu le problème par farfouillé et je ne sais pas pourquoi ce que je ne résolu, mais j'ai découvert quelques petites choses: Je suis cette erreur après le redémarrage de Tomcat en raison d'un accident précédent qui a quitté le DB verrouillé. ActiveRecord :: StatementInvalid (Java :: JavaLang :: Erreur: Erreur interne dans _syscall (): SELECT "urls" * FROM "urls".):
Les étapes suivantes semblaient résoudre le problème, mais il me semble que l'erreur initiale indique simplement que la DB est dans un mauvais état. -I rétrogradé à JRuby 1.7.1 -I enlevé toutes les gemmes se rapportant à la DB de la Gemfile sauf activerecord-jdbcsqlite3 adaptateur. Cela semblait résoudre ce problème. (Les gemmes je l'ai enlevé étaient « sqlite-ruby », « sqlite3 », « activerecord-jdbc adaptateur », « JRuby-rack ») Je note que le premier bijou ici était un bijou C normal, qui ne devrait pas avoir été déployé car il était pas dans une condition, mais semblait s'inclus dans la guerre par fauvette de toute façon. Quoi qu'il en soit, je redéployé et cela a fonctionné, même en utilisant la base de données d'origine.