JRuby java.lang.ClassCastException

Я использовал небольшой скрипт Jruby из http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html для проверки invokedynamic:

class ADuck
    def quack()
        puts "quack A";
    end
end

class BDuck
    def quack()
        puts "quack B";
    end
end

def quack_it(duck)
    duck.quack
end

a = ADuck.new
b = BDuck.new
quack_it(a)
quack_it(b)

Но когда я компилирую с JRuby в Java-файлы классов и затем пытаюсь выполнить его, я получаю следующее исключение:

Java HotSpot(TM) 64-Bit Server VM warning: Use -XX:+UnlockDiagnosticVMOptions be
fore EnableInvokeDynamic flag
Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot
 be cast to java.lang.invoke.SwitchPoint
        at     org.jruby.runtime.invokedynamic.InvokeDynamicSupport.constantFallback
(InvokeDynamicSupport.java:659)
        at duck_typing.__file__(duck_typing.rb:22)
        at duck_typing.load(duck_typing.rb)
        at duck_typing.main(duck_typing.rb)

Моя система: JDK 1.7.0_09 64-разрядная на Windows 7 64-разрядная, JRuby 1.7.2

Используемые командные строки:

jruby -Xcompile.invokedynamic=true -S jrubyc duck_typing.rb
java -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic -cp .;jruby-complete-1.7.2.jar duck_typing

Некоторое время назад я тестировал его на Linux-машине с такими же результатами и на Windows jdk8. С JDK8 это работало, но доставляло мне проблемы с использованием файлов классов в другом проекте.

У кого-нибудь есть идеи, как это исправить? Как я могу использовать JRuby с инди на Java 7?

1 ответ

За исключением вспомогательного параметра JRuby --server, все параметры времени выполнения JVM используют параметр -J, за которым следует конкретный параметр JVM. Например:

Настройки пространства кучи: jruby -JX

Настройки времени выполнения JRuby: jruby -JD

Все настройки, описанные в следующих разделах, являются настройками JVM.

https://github.com/jruby/jruby/wiki/PerformanceTuning

попробуйте это вместо

jruby -J-Xcompile.invokedynamic=true -S jrubyc duck_typing.rb
Другие вопросы по тегам