Как я могу исправить ошибку файла java.lang.ClassFormatError: Truncated?

Вопрос: Я пытаюсь использовать Sublime Text 2 на своем Mac, чтобы написать свой код для класса, который я принимаю. Я хочу протестировать, чтобы убедиться, что я могу сделать это сначала с помощью базовой программы, однако при попытке запустить ее я придумал ошибку. У меня есть система сборки, установленная на JavaC, и код компилируется в порядке,

Вопрос:

Я пытаюсь использовать Sublime Text 2 на своем Mac, чтобы написать свой код для класса, который я принимаю. Я хочу протестировать, чтобы убедиться, что я могу сделать это сначала с помощью базовой программы, однако при попытке запустить ее я придумал ошибку. У меня есть система сборки, установленная на JavaC, и код компилируется в порядке, это просто, когда я пытаюсь запустить его, я получаю проблемы. Вот мои шаги:

$ cd Documents/school/algorithms/assignments/ $ javac Hello.java $ java Hello Exception in thread «main» java.lang.ClassFormatError: Truncated class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Я пытался исследовать, что это значит, но я скоро приду. Вот мой код для Hello.java

public class Hello { public static void main(String[] args) { System.out.println(«Hello World!»); } }

Если кто-то может помочь мне в этом вопросе, мы будем очень благодарны. Дайте мне знать, если вам нужна дополнительная информация.

Ответ №1

У вашего файла Hello.java нет никаких проблем, как я вижу. Но ошибка, которую вы получаете, вызывает java.lang.ClassFormatError: Truncated class file из-за проблемы с вашим файлом класса (байтовый код). На самом деле существует два типа ClassFormatError:

  • Первый – это “Несовместимое магическое значение”, которое происходит только тогда, когда вы изменяете байтовый код (добавляете что-то или удаляете что-то) в файл .class
  • Второй файл “Усеченный класс”, который вы получаете, и причина этой ошибки, заключается в том, что файл .class не содержит никакого байтового кода.

Поэтому я предлагаю вам проверить ваш .class файл, чтобы убедиться, что он содержит некоторый код. Если это не так, сохраните свой код в другом каталоге, а затем скомпилируйте и запустите свой код.

Ответ №2

Я знаю, что это было какое-то время, но у меня был этот вопрос. если AS, который вы используете, и это jboss, тогда вы можете проверить эту ссылку, которая предоставляет решение;

https://access.redhat.com/solutions/2147621

Оцените статью
Добавить комментарий