2017-01-11 4 views
0

Java 클래스에 MyClass라는 이름이 있고 내부에 새 Object가 추가됩니다. jar 파일을 winzip으로 볼 때 아래와 같이 중복 클래스를 보았습니다.jar 및 decompiler 오류에서 중복 된 클래스 이름

MyClass$1.class 
MyClass$2.class 

등등.

어떤 의미입니까? decompiler로 해당 jar 파일을 열려고 시도 할 때 오류가 발생했습니다.

처리되지 않은 예외가 발생했습니다. "Abort"를 눌러 프로그램을 종료하고 "Retry"를 클릭하여 프로그램을 정상적으로 종료하고 "Ignore"를 시도하여 을 계속 시도하십시오.

미리 감사드립니다.

+0

'foo $ something'은 [synthetic class]입니다 (http://stackoverflow.com/questions/399546/synthetic-class-in-java). – Moira

답변

0

Java의 원래 버전에는 중첩 된 클래스가 없었습니다. 추가 될 때 컴파일러에서 문법적으로 설탕으로 구현되었으며 클래스는 후드 아래에 별도의 클래스 파일로 컴파일되었습니다. 이름은 $를 사용합니다. 따라서 MyClass $ 1은 MyClass에 포함 된 익명 클래스입니다.

왜 decompiler가 충돌했는지에 관해서는, 그것은 아마도 나쁜 decompiler입니다. 거기에 현대적인 디 컴파일을 사용할 수 있습니다. BytecodeViewer 또는 Helios과 같은 도구를 사용해보십시오.이 도구는 편리한 GUI가있는 다양한 디 컴파일러를 함께 제공합니다.