Ho creato una piccola libreria, chiamiamola lib
. Si dependends su un'altra libreria, sublib
che è disponibile in Maven centrale:IntelliJ non carica dipendenza transitiva nel progetto maven
lib/pom.xml
:
<dependencies>
<dependency>
<groupId>3rdparty</groupId>
<artifactId>sublib</artifactId>
<version>x</version>
</dependency>
</dependencies>
Ora sto cercando di utilizzare lib
nel mio progetto proj
. Ho impostato come una dipendenza:
proj/pom.xml
:
<dependencies>
<dependency>
<groupId>mynamespace</groupId>
<artifactId>lib</artifactId>
<version>y</version>
</dependency>
</dependencies>
Quando eseguo mvn exec:java -D exec.mainClass=mynamespace.proj.Main
il programma funziona bene. Tuttavia, se l'eseguo da IntelliJ, ottengo il seguente errore:
java.lang.NoClassDefFoundError: 3rdparty/SomeSubLibClass
at mynamespace.SomeLibClass.method(SomeLibClass.java:100)
Questo sembra indicare che IntelliJ non carica la dipendenza transitiva sublib
. Come posso risolvere questo?
A volte devo fare clic destro su 'pom.xml' nell'albero dei file e selezionare' maven> reimport'. (Nel caso non l'abbiate già provato) – kuporific
@kuporific Grazie, l'ha risolto! Ho provato "sincronizzare" e opzioni simili già ma non l'ho ancora trovato ... Se lo fai in una risposta lo accetterò – dtech
In questo contesto "sincronizzare" significa "sincronizzare con il file system" che è non- intuitivo se hai Maven sul cervello. – kuporific