나는 invokedynamic 테스트 http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html에서 약간의 JRuby를 스크립트를 사용 :JRuby를 java.lang.ClassCastException가
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 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)
내 체제 : Windows 7 64 비트에 JDK 1.7.0_09 64 비트, JRuby를 1.7.2
사용 commandlines :
jruby -Xcompile.invokedynamic=true -S jrubyc duck_typing.rb
java -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic -cp .;jruby-complete-1.7.2.jar duck_typing
얼마전 리눅스 컴퓨터에서 동일한 결과와 Windows jdk8을 사용하여 테스트했습니다. JDK8에서는 다른 프로젝트에서 클래스 파일을 사용하는 데 문제가있었습니다.
해결 방법은 누구입니까? JRuby를 Java 7에서 indy와 함께 사용하려면 어떻게해야합니까? JRuby를 편리 매개 변수 --server 제외
죄송합니다 이것을 시도. Java는 나에게 위에서 게시 한 것과 동일한 예외를 제공합니다. – Thorben
컴퓨터에서 테스트 해 보셨습니까? – Thorben
음수. 나는 컴파일 된 클래스없이 루비만을 테스트했다. –