2013-06-17 2 views
1

대상 컴퓨터로 JVM을 사용하여 Java 용 Java 컴파일러를 작성 중이며 작동하는 함수 호출을 얻으려고합니다. 하지만 내 컴파일러에서 만든 클래스 파일을 실행하려고하면이 오류가 발생합니다 : "스레드"주 "java.lang.VerifyError 예외 : (클래스 : 테스트, 메서드 : 테스트 서명 : (I) I) 함수에서 잘못된 반환 유형 "입니다. 여기내 자신의 Java 컴파일러 및 bytecode : 함수 호출 문제

샘플 코드 :

public class Test 
{ 
    public static int test(int a) 
    { 
     return a; 
    } 

    public static void main(String[] args) 
    { 
     int b; 
     b = test(b);  
    } 
    } 

생성 된 클래스 파일 자체 :. 당신이 그것을 다운로드하려고하면

Test.class

(구글은 바이러스를 포함하고 있다고 그래서 내가 제공 그림

만든 클래스 파일 :

Classfile & javap

나는 그 클래스 파일에 무슨 문제가 있는지 잘 모릅니다.

+0

나는 조금이라도 생각이 없습니다. 하지만 당신의 경우 javac로 클래스를 컴파일하고 결과를 나란히 검사 할 것입니다. – SJuan76

+0

그림을 게시하지 마십시오. 꽤 쓸모가 없습니다. javap의 출력을 캡쳐하고이를 포함 시키십시오 (코드로 포맷 됨). 클래스 파일 형식이 JVM 사양을 준수하는지 확인 하시겠습니까? –

답변

2

방법 testireturn 명령어 대신 return 명령어로 끝납니다. 메서드를 사용하여 메서드에서 int를 반환 할 수 없습니다. 당신은 후자를 사용해야합니다.

+0

감사합니다. 나는 여러 종류의 수익을 간과했다. – Iceregen