私のJavaプロジェクトでは、同じパッケージ名(com.example.beans
)の異なる2つのjarファイルに存在するクラスPerson
があります。Intellij/Tomcat:NoSuchMethodError
class Person {
private String firstname;
private String lastname;
public Person(String firstname, String lastname){
this.firstname = firstname;
this.lastname = lastname;
}
}
とjar2
に:
問題は、このクラスはjar1
でこのように定義されていることである
class Person {
private int age;
public Person(int age){
this.age = age;
}
}
このクラスのプロジェクトで正しく使用されているとのIntelliJは文句はありません。私はTomcatがjar2
代わりのjar1
からPerson
をロード疑い
java.lang.NoSuchMethodError: com.example.beans.Person(Ljava/lang/String, Ljava/lang/String)
: は、サーバー(Tomcatの8)起動時に、私は次のエラーを得ました。
質問:署名に応じて正しいクラス を読み込むようにIntelliJに伝えるにはどうすればいいですか?
よろしくお願いいたします。
同じアプリケーション内に同じ名前で、同じパッケージ内に2つのクラスを持つことはできません(異なるJARに属しているにもかかわらず)。クラスの名前を変更するか、別のパッケージに入れます。 – Jesper
@Jesperあなたのソリューションは確かに最も論理的ですが、私はそれらの2つの瓶を担当していないので、私はできません。 – DJey
jar2から 'Person'クラスを使ったことはありますか? IntelliJがうまくいけば、私は推測していません。もしそうなら、jar2またはjar1の名前をクラスパスにjar1を最初に強制するようにしてください。 – tddmonkey