Java maven jar插件找不到我的主类
我有一个Java/Selenium/TestNG/Maven项目。我可以成功创建myproj-0.0.1-SNAPSHOT.jar文件。当我尝试运行它时,我得到一个错误:Java maven jar插件找不到我的主类,java,maven,Java,Maven,我有一个Java/Selenium/TestNG/Maven项目。我可以成功创建myproj-0.0.1-SNAPSHOT.jar文件。当我尝试运行它时,我得到一个错误: $ java -jar myproj-0.0.1-SNAPSHOT.jar Error: Could not find or load main class utilities.MavenTestInvoker 我的主要目标是能够运行这个SNAPSHOT.jar文件,以便在远程机器上运行测试用例 我正在pom.xml中使用构
$ java -jar myproj-0.0.1-SNAPSHOT.jar
Error: Could not find or load main class utilities.MavenTestInvoker
我的主要目标是能够运行这个SNAPSHOT.jar文件,以便在远程机器上运行测试用例
我正在pom.xml中使用构建插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>utilities.MavenTestInvoker</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven编译器插件
3.6.0
1.8
1.8
org.apache.maven.plugins
maven surefire插件
2.19.1
testng.xml
真的
org.apache.maven.plugins
maven jar插件
2.3.2
真的
公用事业公司
当我构建项目时,我使用maven命令:“mvncleanpackage shade:shade”
这创造了我的优步罐
以下是依赖项:
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-invoker</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
</dependency>
plus some others
</dependencies>
org.apache.maven.plugins
maven资源插件
3.0.1
org.apache.maven.shared
maven调用程序
2.2
org.apache.maven.plugins
maven阴影插件
2.4.3
加上其他一些
我做错了什么?包含插件依赖项的正确用法如下,您可以在单个位置合并插件依赖项-
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<!--Notice I have removed the configs here. Not required to generate the jar-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-invoker</artifactId>
<version>2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
</plugin>
</plugins>
</pluginManagement>
</build>
org.apache.maven.plugins
请记住,您的项目必须具有正确的文件夹结构,例如,您的代码必须位于src/main/java中。main类在这里应该做什么?此外,您还没有共享您的POM中定义了shade
插件的内容,你能简单描述一下你做上述工作的最终目的吗?@nullpointer我希望能够运行新创建的jar文件:java-jar myproj-0.0.1-SNAPSHOT.jar,并让它运行我的selenium测试用例。@nullpointer main类应该是我java程序的入口点。它应该从utilities包和MavenTestInvoker类中获取main方法。您可以使用启动一个包含依赖项的jar。这样行吗?或者我应该在插件中使用这个吗?@WillByers如果您在代码中没有使用任何插件实现,那么这些都是插件依赖项。我建议在
中使用它们。这取决于你最终想要实现什么。好吧,你所说的话的份量终于被理解了。我已经对pom.xml文件进行了更改。不过,我仍在尝试设置jar的入口点。我不需要配置,这样我就可以声明main方法在哪里?jar如何知道在utilities.MavenTestInvoker类中查找main方法?啊,是的,我看到@nullpointer。我认为他们需要指定一个主类,这样他们就可以直接使用java-jar…
来打开jar,而不是在命令行上指定它。我想需要澄清一下是的。