Ich benutze das Maven exec plugin, um eine Java-Anwendung von der Kommandozeile aus mit dem Befehl mvn exec: java auszuführen. Ich habe die Hauptklasse in der pom.xml und den zugehörigen Abhängigkeiten angegeben.Maven exec plugin ClassNotFoundException
<groupId>com.example.MyApp</groupId>
<artifactId>MyApp</artifactId>
<version>1.0.0</version>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.example.myclass</mainClass>
<arguments>
<argument>configFile</argument>
<argument>properties</argument>
</arguments>
</configuration>
</plugin>
ich auch eine Reihe von Abhängigkeiten angeben ...
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.example.MyLibrary</groupId>
<artifactId>MyLibrary</artifactId>
<version>1.0.0</version>
</dependency>
Das MyApp
Programm liest eine Konfigurationsdatei, die als Kommandozeilen-Argument übergeben wird. Die Konfigurationsdatei enthält den Namen einer Klasse, die sich in MyLibrary
befindet. So könnte die Klasse com.mypackage.driver.MyClass
sein, die sich in MyLibrary
befindet, die eine Abhängigkeit von dem oben aufgeführten MyApp
Krug ist. aber wenn ich versuche, dies zu laufen bekomme ich ein ClassNotFoundException
...
aktualisieren ---- ich das System Classloader bin mit den Klassen zu laden, die auf der Kommandozeile in dem MyApp
Programm übergeben werden
ClassLoader loader = ClassLoader.getSystemClassLoader();
Ich denke, dass dies das Problem verursacht, da es nach den Klassen auf dem Standardklassenpfad sucht, der die Abhängigkeiten nicht enthält.
Irgendwelche Hinweise darauf, was ich hier falsch mache?
Ich habe das gleiche Problem, hinzugefügt includePluginDependencies, noch ClassNotFoundException. Irgendwelche anderen Vorschläge? –