FFI は:size_t
、jRuby を介して rails を実行すると理解しますが、Warbler を使用して .war ファイルを作成し、java -jar my_project.war
または Tomcat を使用してそれを実行した後では理解できません。
Linux | Windows
-----------------------------+-------------
java -jar works | doesn't work
tomcat works | doesn't work
rails s (using jruby) works | works
Linux と Windows は、比較で同じ war ファイルを使用します。
java -jar
これは、 Windowsでの実行からのバックトレースの上部です。(バックトレースのファイル パスの先頭を編集しました)。
--- Backtrace
TypeError: unable to resolve type 'size_t'
find_type at jar:file:/my_project.war/WEB-INF/lib/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/ffi/types.rb:55
type_size at jar:file:/my_project.war/WEB-INF/lib/jruby-stdlib-1.7.2.jar!/META-INF/jruby.home/lib/ruby/shared/ffi/types.rb:147
SQLAnywhere at my_project.war/WEB-INF/gems/gems/sqlanywhere-ffi-1.0.1/lib/sqlanywhere.rb:13
(root) at my_project.war/WEB-INF/gems/gems/sqlanywhere-ffi-1.0.1/lib/sqlanywhere.rb:5
require at org/jruby/RubyKernel.java:1027
バックトレースでファイルを見ると、さまざまな c タイプがリストされていますが、size_t
.
jRuby で利用できる FFI は 2 つあるようです。
- 通常の FFI gem 。
- jruby-stdlib ffi.
両者の大きな違いは、前者しか分からないことらしい:size_t
。
私の質問は: 2 つの異なる FFI がありますか? もしそうなら: 自分の gem が正しい ffi をロードするようにするにはどうすればよいですか? そうでない場合:何が間違っていますか?
PS: 私は sqlanywhere-ffi gem の作成者です。問題が間違ったものに依存している場合は、変更できます。現在、gemspec、gemfile、およびrequires 'ffi'
メイン エントリ ポイントの依存関係として ffi があります。