ウィンドウではすべてうまくいきましたが、Linux では失敗しました。私がやりたいことは、Ruby スクリプトを -Xcompile.invokedynamic=true パラメーターを使用して Java バイトコードにコンパイルすることです。
[sxu3@** rubyscript]$ jrubyc -Xcompile.invokedynamic=true hello.rb OptionParser::InvalidOption: 無効なオプション: -Xcompile.invokedynamic=true /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1542 で完了 org/jruby/RubyKernel.java:1282 でキャッチ /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1540 で完了 /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1380 の parse_in_order org/jruby/RubyKernel.java:1282 でキャッチ /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1347 の parse_in_order 注文!/homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1341 で 入れ替わる!/homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1432 で 解析!/homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1453 で /homes/sxu3/tools/jruby-1.7.10/lib/ruby/shared/jruby/compiler.rb:83 の compile_argv /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:882 で初期化します /homes/sxu3/tools/jruby-1.7.10/lib/ruby/shared/jruby/compiler.rb:35 の compile_argv (ルート) /homes/sxu3/tools/jruby-1.7.10/bin/jrubyc:5 [sxu3@** rubyscript]$ jrubyc -Xcompile.invokedynamic=true hello.rb ^C [sxu3@** rubyscript]$ which jrubyc ~/tools/jruby-1.7.10/bin/jrubyc [sxu3@** rubyscript]$ jruby -v jruby 1.7.10 (1.9.3p392) 2014-01-09 Java HotSpot(TM) Server VM 1.7.0_51-b13 上の c4ecd6b [linux-i386] [sxu3@** rubyscript]$ [sxu3@** rubyscript]$ uname -a Linux .. 2.6.32-358.23.2.el6.x86_64 #1 SMP Wed Oct 16 18:37:12 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
-Xcompile.invokedynamic=true を指定しないと、jrubyc は機能しますが、生成されたバイトコードに invokedynamic 命令はありません。また、
"jrubyc -Xcompile.invokedynamic=true hello.rb"
ウィンドウで動作し、ウィンドウのクラスファイルでinvokedynamicを見ました。
他のすべての jrubyc プロパティ (.jrubyrc) をデフォルト値のままにします
hello.rb は 1 行の Ruby スクリプトです。
puts "hello world"
jrubyc 1.7.6 と同じエラーも試しました。誰でも手がかりを提供できますか?
[アップデート]:
最後に、例外は jrubyc が -Xcompile.invokedynamic=true オプションをサポートしていないことを示していると思います。jruby wiki ページには、"jrubyc" の代わりに jruby と書かれており、オプションで動作します。