2017-08-16 4 views
0

Ich habe ein Problem, wenn ich meine pom.xml einrichte, würde meine Anwendung immer noch nicht laufen und sagen, dass sie Hauptklasse nicht finden oder laden kann. Ich habe mein Setup pom.xml als hereMaven konnte Hauptklasse nicht finden oder laden, nachdem ich das Plugin richtig gesetzt habe

Mein pom.xml erklärte:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>EditPropertiesFile</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>com.example.EditPropertiesFile.Main</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration --> 
     <dependency> 
      <groupId>commons-configuration</groupId> 
      <artifactId>commons-configuration</artifactId> 
      <version>1.6</version> 
     </dependency> 
    </dependencies> 

</project> 

verwende ich Befehl mvn saubere Übersetzung assembly: Single die Anwendung zu verpacken und sie dann mit Java - jar outputedJar.jar

Das, was MANIFEST.MF ist, die innerhalb dieses Glas ist, sagt:

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: xxxx 
Build-Jdk: 1.8.0_121 
Main-Class: com.example.EditPropertiesFile.Main 
Jedoch

, wenn ich laufen lasse, erhalte ich nächste Fehler:

Error: Could not find or load main class com.example.EditPropertiesFile.Main

Ich weiß nicht, was sonst kann ich versuchen, wie ich alle über SO verschiedene Antworten versucht haben, und sie alle scheinen einige andere Probleme zu beheben .

EDIT: Ausgang beim Ausführen-Befehl:

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building EditPropertiesFile 1.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ EditPropertiesFile --- 
[INFO] Deleting D:\Users\xxxx\Documents\Java_workspace\EditPropertiesFile\target 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ EditPropertiesFile --- 
[WARNING] Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] skip non existing resourceDirectory D:\Users\xxxx\Documents\Java_workspace\EditPropertiesFile\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ EditPropertiesFile --- 
[INFO] No sources to compile 
[INFO] 
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ EditPropertiesFile --- 
[WARNING] Cannot include project artifact: com.example:EditPropertiesFile:jar:1.0; it doesn't have an associated file or directory. 
[INFO] Building jar: D:\Users\xxxx\Documents\Java_workspace\EditPropertiesFile\target\EditPropertiesFile-1.0-jar-with-dependencies.jar 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.525 s 
[INFO] Finished at: 2017-08-16T21:17:56+02:00 
[INFO] Final Memory: 13M/225M 
[INFO] ------------------------------------------------------------------------ 

Innerhalb der JAR-Datei gibt es keine Datei Main.java

Struktur meines Projekts:

project structure

Antwort

0

Überprüfen/Entpacken Sie die JAR-Datei und suchen Sie nach der Hauptklasse in der JAR-Datei oder nicht. Überprüfen Sie auch die Paketstruktur.

Sie können auch die Ausgabeprotokolle hinzufügen, die während der Ausführung des von Ihnen erwähnten mvn-Befehls von mvn kommen.

[update] Sieht aus wie Ihre Verzeichnisstruktur ein Problem sein kann, also überprüfen Sie, ob das korrekt ist oder nicht. Wenn in diesem Fall zum Beispiel baseProjectDir das Verzeichnis ist, in dem Sie pom.xml (baseProjectDir \ pom.xml) haben, sollte sich Ihr Main.java relativ zu baseProjectdir in folgendem Verzeichnis befinden: baseProjectDir \ src \ main \ java \ com \ Beispiel \ EditPropertiesFile \ Main.java

+0

ich die Frage jetzt bearbeitet. Das Main.java ist nicht in meinem ausgegebenen Glas. –

+0

Ich bin mir nicht sicher, ob die Verzeichnisstruktur das Problem ist. Ich bearbeitete Frage, um Projektstrukturbild am Ende –

+0

zu geben, wenn Sie mvn von der Befehlszeile verwenden, dann müssen Sie möglicherweise sicherstellen, dass die Verzeichnisstruktur mvn Standard entspricht. Vielleicht kannst du die Struktur, die ich erwähnt habe, einmal ausprobieren, wenn es noch nicht geschehen ist. – Sharman25

0

Wenn die Hauptklasse ist EditPropertiesFile .Hauptrechner auch

entfernen, in dem pom.xml:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-shade-plugin</artifactId> 
<version>3.0.0</version> 
<executions> 
    <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     <configuration> 
      <transformers> 
       <transformer 
        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
        <mainClass>com.example.EditPropertiesFile.Main</mainClass> 
       </transformer> 
      </transformers> 
     </configuration> 
    </execution> 
</executions> 

+0

Nein, com.example.EditPropertiesFile ist ein Paket mit der Hauptklasse Main.java. Ich habe schon alles in meiner Pom-Datei (außer für den endgültigen Namen, das ist nicht das Problem) –

Verwandte Themen