/ / Java - що викликає ClassFormatError? - java, клас, формат

Java - Що викликає ClassFormatError? - java, клас, формат

При запуску програми від Eclipse вона працює добре.

Запускаючи його поза Eclipse, я отримую таке:

 java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name]

Клас, про який йде мова, реалізується з інтерфейсу, а програма має декілька інших класів, що поширюються на клас, зазначений у помилці.

Що це викликає і як це виправлено?

Відповіді:

2 для відповіді № 1

Викидається, коли Java Virtual Machine намагається прочитати файл класу та визначить, що файл неправильно чи іншим чином не може бути інтерпретований як файл класу.

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassFormatError.html

Javadocs - ваш друг.


2 для відповіді № 2

У мене було те саме питання. Як на мене, першопричиною було те, що плагін aspejj збирає джерела два рази. Клас "Аспект" залишається в модулі "service" і компілюється з плагіном аспектуJ. І тоді він вже компілюється в модуль "web" верхнього рівня як залежність і знову відповідає (оскільки модуль "service" був як "weaveDependency" у "web" модулі "configJ plugin config"). Рішення: Я замінив наступну конфігурацію в модулі "web"

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<weaveDependencies>
<weaveDependency>
<groupId>com.taxi.core</groupId>
<artifactId>service</artifactId>
</weaveDependency>
</weaveDependencies>
</configuration>

з

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>com.taxi.core</groupId>
<artifactId>service</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>


0 для відповіді № 3

Google і виявили, що відключення функції "Розгортання на збереження" може допомогти подолати проблему. Спробуйте на тестовій платформі і вирушайте на виробництво!