In meinem Java-Projekt habe ich eine Klasse Person
, die in zwei verschiedenen Gläsern mit dem gleichen Paketnamen (com.example.beans
) existiert.Intellij/Tomcat: NoSuchMethodError
Das Problem ist, dass diese Klasse wie dies in jar1
definiert:
class Person {
private String firstname;
private String lastname;
public Person(String firstname, String lastname){
this.firstname = firstname;
this.lastname = lastname;
}
}
und in jar2
:
class Person {
private int age;
public Person(int age){
this.age = age;
}
}
Diese Klasse verwendet wird, richtig in das Projekt und IntelliJ beschwert sich nicht. Auf dem Server (tomcat 8) Inbetriebnahme, bekam ich folgende Fehlermeldung:
java.lang.NoSuchMethodError: com.example.beans.Person(Ljava/lang/String, Ljava/lang/String)
ich Tomcat Person
von jar2
statt jar1
geladen vermuten.
Frage: Wie kann ich IntelliJ (Tomcat sagen) die richtige Klasse je nach Signatur laden?
Grüße.
Sie sollten nicht zwei Klassen mit demselben Namen und demselben Paket in derselben Anwendung haben (obwohl sie in verschiedenen JARs enthalten sind). Benennen Sie eine der Klassen um oder fügen Sie sie in ein anderes Paket ein. – Jesper
@Jesper Ihre Lösung ist sicherlich die logischste, aber da ich nicht verantwortlich für diese zwei Gläser bin, kann ich nicht. – DJey
Verwenden Sie jemals die 'Person' Klasse von jar2? Wenn IntelliJ funktioniert, denke ich nicht. Wenn ja, benenne einfach jar2 oder jar1 um, um jar1 auf den Classpath zu setzen – tddmonkey