2010-01-18 8 views
3

Java 1.6으로 컴파일 및 실행될 때 버그가있는 동작을 보여주는 분산 된 JBoss 기반 응용 프로그램이 있습니다. Java 1.5로 컴파일되고 Java 1.6으로 실행될 때 다른 버그를 보여줍니다. 그러나 Java 1.5로 컴파일하고 실행할 때 제대로 작동합니다. 이 응용 프로그램을 디버깅하는 최선의 방법은 무엇입니까? Java 1.5에서 1.6 변환을위한 보풀이 있습니까?Java 1.5에서 1.6으로 포팅하는 동안 디버깅하는 방법은 무엇입니까?

물론이 동작은 내가 사용중인 타사 라이브러리에 따라 다릅니다. JBoss 4.0.3 (및 다른 여러 라이브러리도 사용하고 있습니다!)은 상당히 오래된 버전입니다. JBoss 버전을 업그레이드하기 전에 문제가 내 코드와 관련이 없는지 확인하고 싶습니다.

+2

완전한 대답은 아니지만 이것이 도움이되기를 바랍니다. 우리가 5에서 6으로 업그레이드했을 때, 우리는지도 반복기가 다른 순서로 결과를 반환하기 시작했습니다. b) Class.getMethods()가 결과를 다른 순서로 반환하기 시작했습니다. 물론 우리는 명령에 민감하지 않아야합니다. 물론, 우리는 그렇습니다. Hilarity는 계속 일어났다. –

답변

1

응용 프로그램의 크기와 타사 라이브러리에 대한 호출의 복잡성에 따라이 작업을 수행 할 수 있습니다. 제 3 자 라이브러리 호출에 의해 리턴 된 값을 실제로 리턴하고 두 Java 버전 모두로 컴파일/실행하는 모형을 작성하십시오. 이 방법으로, 당신은 당신의 코드가 아무 잘못을하지 않는다는 것을 확신 할 수 있습니다. 나는 이것이 가장 고통스러운 방법이라고 생각합니다. :) 그러나 이미이 응용 프로그램에 대한 단위 테스트가있는 경우에는 그 주위에 작은 변경 만하면됩니다.

+0

저는 코드를 상속 받았으며 불행히도 유닛 테스트가 거의 없습니다. 아마 나는 (그러나 도전적인 과제를) 만들 것입니다. –

1

우선 Java 6의 최신 버전으로 실행해야합니다. Sun Java를 사용하면 다음과 같은 릴리스에서 수정 사항 10이 많은 사항을 수정했으며 여전히 수정 사항이 남아 있습니다.

두 번째로 JBoss에서 버전이 Java 6과 호환되는지 확인하십시오.

충분하지 않다면, 차이점을 버그로 간주하고 하나씩 찾아야 할 것입니다. 적어도 자바 6과 자바 5가있는 두 개의 세션을 병렬로 실행할 수 있습니다. 따라서 의 동작이 인 동작을 확인할 수 있습니다.

관련 문제