나는 클래스 로더 문제로 실행했습니다, 그리고는 다음과 같이 간다 :이 일이 일어날 수 있는지 몰랐다 처음ClassDefiner는 언제 사용됩니까?
java.lang.ClassCastException: com.google.appengine.api.datastore.Key
cannot be cast to com.google.appengine.api.datastore.Key
을하지만, 일부 검색 후 나는 ClassCastException
도 던져 질 수 있다는 것을 배웠습니다 같은 클래스가 2 개의 다른로드 된 경우 ClassLoader
. 나는 주위를 파고 계속이 발견 :
[JVM_DefineClass에서로드 com.google.appengine.api.datastore.Key]
...
[로드 com.google.appengine.api.datastore.Key을 파일 : /home/alex/java/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.5.1.r36v201106211634/appengine-java-sdk-1.5.1/lib/user/appengine-api-1.0-sdk- 1.5.1.jar]
실제로 이것은 Key
이 실제로 2 가지 다른 ClassLoader
에로드된다는 증거입니다. 그러나 조사를 계속하는 방법을 모릅니다. 새로운 ClassLoader
은 ClassDefiner
(http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-sun/reflect/sun/reflect/ClassDefiner.java.htm 참조)을 통해 인스턴스화되었지만 그 이유는 알 수 없습니다. 나는 몇 가지 해답을 찾아 봤지만 아무것도 발견하지 못했다.
기본 테스트에서 을 @BeforeClass
으로 설정한다는 것과 관련이 있습니까? 그러나 그것이 사실이라면 (JVM_DefineClass를 받아 들일 수 있습니다), 두 번째 것은 무엇입니까 ClassLoader
?
희망 사항은 여기에서 대답을 찾으십시오. Alex.
안녕하세요, Ryan, 저는 jdk에서 버그를 찾지 않고 대신 내 설정을 수정하려고합니다. - 지난 며칠 동안 나를 미치게 만들었습니다. 나는 짧게하려고 노력할 것이다 - –
http://pastebin.com/GVdzMdQX. 나는 그것들을 조사 할 것이고,'Key' 클래스가 두 번로드된다는 것이 분명하다. 그리고 나는 정말로 내 코드에서 뭔가 잘못되었다고 확신한다;) –