라이브러리의 인터페이스에서 한 메소드의 리턴 유형을 변경했습니다. 이전에는 void 였고 객체를 반환하도록 수정했습니다. 반환 된 객체 (다른 모듈 용)를 사용하고 싶지 않았기 때문에 모듈에서 코드를 변경하지 않았습니다. 새로운 라이브러리 jar로 모듈을 컴파일하고 실행 한 단위 테스트를 실행했지만 푸시했을 때 실행했습니다. 라이브러리 항아리와 함께 jar 파일을 만들고 모듈을 실행하면 인터페이스에서 변경된 메소드에 대해 java.lang.NoSuchMethodError가 발생합니다. 인터페이스와 구현을 수정했습니다. 둘 다 라이브러리 jar에 있으며 스프링 주석을 사용하여 모듈에 구현 객체를 삽입합니다. 이 문제의 가능한 원인은 무엇입니까?메소드의 리턴 유형 변경은 java.lang.NoSuchMethodError를 제공합니다.
답변
모든 것을 다시 컴파일하지 않았거나 모든 재 컴파일 된 jar 파일을 밀어 넣지 않은 것처럼 들립니다.
또한 서버를 다시 시작했는지 여부를 지정하지 않았습니다. 일종의 "핫 리 스타트 (hot restart)"가 진행된다면 모든 클래스 로더를 매우 조심스럽게 구성해야만 올바른 결과를 얻을 수 있습니다. 컨테이너를 완전히 다시 시작할 수 있다면 도움이 될 것입니다.
예전의 메소드 서명이 여전히 어딘가에 매달려있는 것처럼 보이는 것처럼 프로덕션 전개 환경을 지우지 않았습니까?
우리는 항상 프로덕션 (및 QA) 빌드 프로세스를 구성하여 모든 클래스를 지우고 이와 같은 문제로 인해 정확하게 다시 컴파일합니다. 때때로 컴파일러 종속성 발견법은 잘못되었습니다 (특히 컴파일러가 전체 종속성을 최적화하는 상수로 정의 된 정적 최종 필드가있는 경우).
이 경우 메서드를 사용하는 코드가 변경되지 않았지만 (실제로 변경되지 않았기 때문에) 컴파일 된 바이트 코드가 올바른 메서드 서명으로 해석되지 않고 찾고자하는 것을 찾을 수 없습니다. 바이트 코드 레벨에는 JVM이 찾고있는 리턴 유형에 대한 참조가 있습니다.
void
은 다른 유형의 하위 유형이 아닙니다. 따라서 void
유형을 반환하도록 인터페이스를 변경하면 void
을 반환하는 구현 클래스는 더 이상이 메소드와 호환되지 않습니다.
Java 바이트 코드에서 메소드의 리턴 유형은 메소드 서명의 일부이며 동일한 이름과 동일한 매개 변수 (Java 언어에서는 수행 할 수없는) 인 두 메소드를 구별합니다. 따라서이 메소드를 호출하는 코드는 다시 컴파일되지 않았고 여전히 void를 반환하는 메소드를 호출하려고합니다.
- 1. 캐스팅 리턴 유형
- 2. 변경은 CVS에서
- 3. oracle collection as function 리턴 유형
- 4. 동일한 메소드, 다중 리턴 유형. 코드 구성
- 5. 변수 및 공변 리턴 유형 확장
- 6. objective-c에서 메소드의 리턴 값을 무시하는 것이 유효합니까?
- 7. PHP에서 유형 힌트가있는 동적 반환 유형?
- 8. 디자인 변경은 어떻게 처리합니까?
- 9. 홈페이지 변경은 어디에서 시작해야합니까?
- 10. 변경은 iframe 내용
- 11. 변경은 새로운 사업부에 초점 mousedown
- 12. Windows XP의 배경 화면 변경은 ..
- 13. 입력 유형 검색 = password Request.Form [ "strPassword"]는 null을 제공합니다.
- 14. 반환 유형이 해당 메소드의 인수의 단독 유형 인 메소드 정의
- 15. Java 메소드의 접두사 반환 유형 만 실행되는 이유는 무엇입니까?
- 16. Instrument (OSX)의 문서화되지 않은 Objective-C 메소드의 인수 유형
- 17. 커스텀 Object 클래스를 가진 JNI 메소드의 리턴 타입을 정의하는 방법은 무엇입니까?
- 18. 메쏘드 리턴 타입
- 19. 가장 간단하게 요청 된 변경은 구현하기가 복잡합니까?
- 20. 거래에 대한 최소 동전 변경은 어떻게 계산합니까?
- 21. TreeView Items 패널 방향 변경은 효과가 없음
- 22. JavaScript CSS 변경은 1 초 동안입니까?
- 23. Managed Exensibility Framework의 내보내기 변경은 무엇을 의미합니까?
- 24. 스폰 된 프로그램의 리턴 코드를 얻는 방법
- 25. 메소드가 서브 클래스를 리턴 할 수있을 때 리턴 유형은 무엇입니까?
- 26. PHP : Eclipse PDT가있는 필드에 대한 힌트 유형
- 27. 텍스트 영역의 캐리지 리턴
- 28. XmlNode Innertext에서 캐리지 리턴
- 29. 소문자 열이있는 리턴 모델
- 30. iPhone 키보드 리턴 키