Spec-Zone .ru
спецификации, руководства, описания, API
|
java.lang.ClassFormatError
Брошенный ClassLoader
Выполняя апплет в браузере, используя Sun Среда выполнения Java™ (JRE™), a java.lang.ClassFormatError
бросается ClassLoader
. Тот же самый апплет работает под Microsoft Virtual Machine (VM).
Эта ошибка вызывается байт-кодами, сгенерированными от старого JDK 1.0.2/1.1 компиляторы, или от стороннего obfuscator. В прошлом многие из этих компиляторов и obfuscators сгенерированный байт-код, который не приспосабливает Sun Спецификации JRE. Поскольку верификаторы в недавнем Java выпуски SE очень строги о плохом формате класса, java.lang.ClassFormatError
бросается VM, когда эти плохие файлы класса загружаются.
Некоторыми типичными проблемами в некоторых более старых файлах класса является следующий (отметьте, что этот список не является исчерпывающим):
Чтобы позволить некоторым из апплетов с плохими файлами класса работать в платформе Java, Плагин Java содержит преобразователь байт-кода, чтобы преобразовать некоторые из плохих файлов класса к хорошим. В настоящий момент только плохие файлы класса со следующими проблемами могут быть преобразованы:
К сожалению, преобразователь байт-кода не может преобразовать следующие проблемы, которые все еще приведут к a ClassFormatError
:
Можно разрешить эти проблемы, просто перекомпилировав Ваши классы Java с javac
компилятор от JDK. Если Вы хотите использовать сторонний obfuscator, убедитесь, что использовали тот, который производит файлы класса, которые уважают надлежащий формат файла класса.
Ни один.