1

Haben mehrere Hauptklassen im Glas mit folgendem Code in pom.xml hinzugefügt alsAusführen eine JAR-Datei mit mehreren Hauptklassen, die Befehlszeile

<groupId>com.test</groupId> 
     <artifactId>indexer</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.4.1</version> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <id>build-first</id> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
        <transformer 
         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
         <mainClass>com.test1</mainClass> 
        </transformer> 
       </transformers> 
       <finalName>first-runnable</finalName> 
      </configuration> 
     </execution> 
     <execution> 
      <phase>package</phase> 
      <id>build-second</id> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
        <transformer 
         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
         <mainClass>com.test2</mainClass> 
        </transformer> 
       </transformers> 
       <finalName>second-runnable</finalName> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

aber nicht in der Lage folgt die JAR-Datei erfolgreich von der Kommandozeile ausgeführt werden. Versucht mit der Befehlszeile als
java -jar Indexer-1.0.0-SNAPSHOT.jar com.test1 aber erhalten kein Haupt-Manifest Attribut, in Indexer-1.0.0-SNAPSHOT.jar

Could jemand bitte führen Sie, wie Sie die Hauptklassen von Kommandozeile mit diesem Glas ausführen.

Dank

+0

denken beschrieben erstellt werden I diese http helfen : //stackoverflow.com/questions/3976514/multiple-runable-classes-inside-jar-how-to-run-them – bmavus

+0

Dank bmavus. Ich kann den dort angegebenen java -cp-Befehl nicht als Lösung verwenden, da es im Klassenpfad viele jar-Dateien gibt, die in der Befehlszeile angegeben werden müssen. Bisher konnte nur eine Hauptklassendatei in jar mit java -jar indexer-1.0.0-SNAPSHOT.jar ausgeführt werden. Auf der Suche nach einem Befehl, der ähnlich ist. – Rehan

+0

Ich bin mir nicht sicher und versuchte es nicht vor, aber haben Sie jemals versucht, etwas wie Java-cp myjar.jar .MyClass – bmavus

Antwort

0

Sie sollten erzeugte Artefakt laufen (first-runnable, Second-runnable) anstelle von Original. Wenn Sie Tag 'finalName' verwenden dann ursprüngliche Artefakt wird nicht verändert und neues Glas wie in plugin documentation

Run

java -jar first-runnable.jar com.test1 

oder

java -jar second-runnable.jar com.test1 
Verwandte Themen