0

Rails 3 アプリケーションを Tomcat 6.0.24 にデプロイしようとしています。JRuby のバージョンは 1.6.2 (ruby-1.8.7-p330) で、Warbler は 1.3.0 です。バンドラーを使用して、gem の依存関係を処理します。

WEB-INF/lib フォルダーを確認すると、次の jar が存在します。

  • jruby-rack-1.0.9.jar
  • jruby-core-1.6.2.jar
  • jruby-stdlib-1.6.2.jar

ただし、サーバーの起動後にアプリケーションにヒットすると、次の例外が発生します。

javax.servlet.ServletException: Filter execution threw an exception
java.lang.NoClassDefFoundError: Could not initialize class com.kenai.jaffl.struct.Struct$Constants
    com.kenai.jaffl.struct.Struct$Signed64.<init>(Struct.java:1074)
    org.jruby.ext.posix.HeapStruct$Int64.<init>(HeapStruct.java:41)
    org.jruby.ext.posix.LinuxHeapFileStat.<init>(LinuxHeapFileStat.java:35)
    org.jruby.ext.posix.LinuxPOSIX.allocateStat(LinuxPOSIX.java:26)
    org.jruby.ext.posix.LinuxPOSIX.stat(LinuxPOSIX.java:107)
    org.jruby.ext.posix.LazyPOSIX.stat(LazyPOSIX.java:226)
    org.jruby.RubyFileTest.directory_p(RubyFileTest.java:102)
    org.jruby.RubyFileTest.directory_p(RubyFileTest.java:87)
    org.jruby.RubyFileTest$FileTestFileMethods.directory_p(RubyFileTest.java:428)
    org.jruby.RubyFileTest$FileTestFileMethods$s$1$0$directory_p.call(RubyFileTest$FileTestFileMethods$s$1$0$directory_p.gen:65535)
    org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:282)
    org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:139)
    org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    org.jruby.ast.IfNode.interpret(IfNode.java:111)
    org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
    org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:147)
    org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:163)
    org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:262)
    org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:105)
    org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:63)
    org.jruby.ast.IfNode.interpret(IfNode.java:117)
    org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
    org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:120)
    org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:145)
    org.jruby.runtime.callsite.SuperCallSite.cacheAndCall(SuperCallSite.java:286)
    org.jruby.runtime.callsite.SuperCallSite.callBlock(SuperCallSite.java:70)
    org.jruby.runtime.callsite.SuperCallSite.call(SuperCallSite.java:75)
    org.jruby.ast.ZSuperNode.interpret(ZSuperNode.java:101)
    org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104).....

それは何か鐘を鳴らしますか?

[更新された回答]: 問題は、サーバー上の Java 実装にありました。オープンJDKでした。Sun Java 1.6.0_26 に切り替えたところ、すべてが機能し始めました:)

4

2 に答える 2

0

これが新しいバグなのか古いバグなのかはわかりません。エラーをグーグルで調べるか、 http://bugs.jruby.orgを調べることを検討してください。

-Djruby.native.enabled=falseVM で pure-Java POSIX レイヤーを使用するように設定して、このエラーを回避してみてください。

于 2011-06-27T19:03:30.743 に答える
0

問題は、サーバー上の Java 実装にありました。オープンJDKでした。Sun Java 1.6.0_26 に切り替えたところ、すべてが機能し始めました

于 2011-07-14T09:52:44.133 に答える