正确设置插件后,Maven 无法找到或加载 main Class
Maven could not find or load main Class, after properly setting plugin
我有一个问题,当我设置 pom.xml 时,我的应用程序仍然不会 运行,说它找不到或加载主程序 Class。
我已按照 here
所述设置我的 pom.xml
我的pom.xml:
<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>
我使用命令 mvn clean compile assembly:single 打包应用程序,然后 运行 使用 java -罐子 outputedJar.jar
这就是那个罐子里面的 MANIFEST.MF 说的:
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
但是,当我 运行 时,出现下一个错误:
Error: Could not find or load main class com.example.EditPropertiesFile.Main
我不知道我还能尝试什么,因为我已经尝试了所有 SO 的各种答案,它们似乎都解决了一些其他问题。
编辑:
运行ning 命令时的输出:
[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] ------------------------------------------------------------------------
jar文件里面没有文件Main.java
我的项目结构:
Check/Extract jar 文件并查找Main class 是否已添加到jar 文件中,另外,检查包结构。
另外,在执行您提到的 mvn 命令期间,您能否添加来自 mvn 的输出日志。
[更新]
看起来您的目录结构可能有问题,因此请检查它是否正确。例如,在这种情况下,如果 baseProjectDir 是您拥有 pom.xml (baseProjectDir\pom.xml) 的目录,那么您的 Main.java 应该位于相对于 baseProjectdir 的以下目录中:
baseProjectDir\src\main\java\com\example\EditPropertiesFile\Main.java
如果主要 class 是 EditPropertiesFile 删除 .Main
另外,添加到 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>
我有一个问题,当我设置 pom.xml 时,我的应用程序仍然不会 运行,说它找不到或加载主程序 Class。 我已按照 here
所述设置我的 pom.xml我的pom.xml:
<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>
我使用命令 mvn clean compile assembly:single 打包应用程序,然后 运行 使用 java -罐子 outputedJar.jar
这就是那个罐子里面的 MANIFEST.MF 说的:
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
但是,当我 运行 时,出现下一个错误:
Error: Could not find or load main class com.example.EditPropertiesFile.Main
我不知道我还能尝试什么,因为我已经尝试了所有 SO 的各种答案,它们似乎都解决了一些其他问题。
编辑: 运行ning 命令时的输出:
[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] ------------------------------------------------------------------------
jar文件里面没有文件Main.java
我的项目结构:
Check/Extract jar 文件并查找Main class 是否已添加到jar 文件中,另外,检查包结构。
另外,在执行您提到的 mvn 命令期间,您能否添加来自 mvn 的输出日志。
[更新] 看起来您的目录结构可能有问题,因此请检查它是否正确。例如,在这种情况下,如果 baseProjectDir 是您拥有 pom.xml (baseProjectDir\pom.xml) 的目录,那么您的 Main.java 应该位于相对于 baseProjectdir 的以下目录中: baseProjectDir\src\main\java\com\example\EditPropertiesFile\Main.java
如果主要 class 是 EditPropertiesFile 删除 .Main
另外,添加到 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>