2014-07-23 2 views
1

Groovy 운영자의 설명에 다음 코드를 사용하려고 시도했지만, VerifyError이 발생했습니다. 너희들 생각 좀 해봤 니?java.lang.VerifyError는 왜 의미가 있습니까?

코드 및 콘솔 출력은 다음과 같습니다.

class Hello extends ArrayList { 
    boolean isCase(Object val) { 
     return val == 66 
    } 

    static void main(args) { 
     def myList = new Hello() 
     myList << 55 
     assert 66 in myList 
     assert !myList.contains(66) 
    } 
} 

오류 로그 : 주제 How does the Groovy in operator work?에서

Exception in thread "main" java.lang.VerifyError: (class: Hello, method: super$1$stream signature:()Ljava/util/stream/Stream;) Illegal use of nonvirtual function call 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:259) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116) 

코드 원점.

업데이트 :

그루비 버전 : 1.8.6 JVM : 1.6.0_45 업체 : 썬 마이크로 시스템즈의 OS : 리눅스

+2

생성 된 바이트 코드가 유효하지 않음을 의미합니다. Groovy의 어떤 버전입니까? 그것은 groovyConsole에서 나를 위해 잘 작동합니다. –

+0

@DaveNewton Groovy 버전은 1.8.6입니다. –

답변

1

에 체크 아웃. Java 용이지만 문제는 일반적으로 잘못된 라이브러리 버전을 사용하고 있다는 것입니다. 클래스가 있지만 예상보다 다른 버전이 있습니다.

http://craftingjava.blogspot.co.uk/2012/08/3-reasons-for-javalangverfiyerror.html

아마 당신은 멋져요 또는 Java SDK 설치를 엉망있다.

+0

개별 설치는 괜찮습니다. 클래스 경로 또는 Groovy 컴파일 문제 일 가능성이 큽니다. –

관련 문제