2017-01-11 1 views
0

У меня есть класс Java с именем MyClass и внутри Я добавляю новый Object. Посмотрев на банку winzip, я увидел дублированный класс, как показано ниже.Дублируемое имя класса в ошибке jar и decompiler

MyClass$1.class 
MyClass$2.class 

и так далее.

Что это значит? Это проблема, когда я пытался открыть этот файл jar с декомпилятором, он дает ошибку ниже

Возникло необработанное исключение. Нажмите «Прервать», чтобы завершить программу «Повторить», чтобы нормально выйти из программы и «Игнорировать», чтобы попытаться выполнить .

Заранее спасибо.

+0

'foo $ something' - [синтетический класс] (http://stackoverflow.com/questions/399546/synthetic-class-in-java). – Moira

ответ

0

Исходная версия Java не имела вложенных классов. Когда они были добавлены, они были реализованы как синтаксический сахар в компиляторе, а классы были скомпилированы для разделения файлов классов под капотом. Имена используют $. Итак, MyClass $ 1 является анонимным классом, который содержится в MyClass.

Что касается того, почему ваш декомпилятор разбился, это, вероятно, плохой декомпилятор. Там есть много современных декомпилировщиков, которые вы можете использовать. Вы также можете попробовать такой инструмент, как BytecodeViewer или Helios, который объединяет множество разных декомпиляторов с удобным графическим интерфейсом.

Смежные вопросы