Я сделал все хорошо в окне, но не в Linux. Что я хочу сделать, так это скомпилировать скрипт ruby в байт-код java с параметрами -Xcompile.invokedynamic=true:
[sxu3@** rubyscript]$ jrubyc -Xcompile.invokedynamic=true hello.rb OptionParser::InvalidOption: invalid option: -Xcompile.invokedynamic=true complete at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1542 catch at org/jruby/RubyKernel.java:1282 complete at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1540 parse_in_order at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1380 catch at org/jruby/RubyKernel.java:1282 parse_in_order at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1347 order! at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1341 permute! at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1432 parse! at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:1453 compile_argv at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/shared/jruby/compiler.rb:83 initialize at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/1.9/optparse.rb:882 compile_argv at /homes/sxu3/tools/jruby-1.7.10/lib/ruby/shared/jruby/compiler.rb:35 (root) at /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 c4ecd6b on Java HotSpot(TM) Server VM 1.7.0_51-b13 [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 — это однострочный ruby-скрипт:
puts "hello world"
Я также пробовал jrubyc 1.7.6 и те же ошибки. Кто-нибудь может дать какую-нибудь подсказку?
[Обновлять]:
Наконец, я думаю, что исключение указывает на то, что jrubyc не поддерживает параметр -Xcompile.invokedynamic=true. На вики-странице jruby написано, что jruby вместо «jrubyc» может работать с опцией.