Java Maven错误:无法找到或加载主类
我使用的是Java Maven程序,我不知道输入什么作为Java Maven错误:无法找到或加载主类,java,jar,maven-2,manifest,main,Java,Jar,Maven 2,Manifest,Main,我使用的是Java Maven程序,我不知道输入什么作为。我已经尝试了基于的各种方法,但它们并没有解决错误 每次它都说: Maven Error: Could not find or load main class ... 我把它写在我的pom.xml中(减去?) ... ... maven汇编插件 2.5.3 src/main/assembly/jar-with-dependencies.xml ??? 组装 包裹 单一的 ... ... 如何修复这些错误?我建议的第一件事是使用 [
。我已经尝试了基于的各种方法,但它们并没有解决错误
每次它都说:
Maven Error: Could not find or load main class ...
我把它写在我的pom.xml
中(减去?
)
...
...
maven汇编插件
2.5.3
src/main/assembly/jar-with-dependencies.xml
???
组装
包裹
单一的
...
...
如何修复这些错误?我建议的第一件事是使用
[...]
[...]
.除非出于设置mainClass以外的原因需要“maven程序集插件”,否则可以使用“”插件
我使用Maven得到了这个错误,我发现了解决方案
Error: Could not find or load main class com.mycompany.testapifactory.Main
我在Linux上使用java JDK 1.7版,我的pom.xml
文件是由Netbeans生成的默认文件,我使用这些命令进行编译,这些命令在正常的hello world java应用程序中运行良好:
mvn clean compile
java -jar target/TestAPIFactory-1.0-SNAPSHOT.jar com.mycompany.testapifactory.Main
发生了什么:
我的问题是,我的主要方法是扩展一些奇异的东西,比如:
public class Main extends SomeExoticLibraryClass{
public static void main(String[] args){
//...
}
}
正是主类的这种扩展导致了上述错误
TLDR解决方案:
确保主类没有扩展任何第三方类。将它们重构成自己的类。该错误消息非常糟糕,需要经过消除过程才能知道该怎么做 我也明白了,关键是将输出文件夹从bin
更改为target\classes
。在Eclipse中,将项目转换为Maven项目时,这一步似乎不会自动完成,但Maven项目不会基于bin
查找主类,而是基于target\classes
在plugins下指定pom中的主类位置
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<mainClass>com.example.hadoop.wordCount.WordCountApp</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven jar插件
2.4
真的
com.example.hadoop.wordCount.WordCountApp
对我来说,问题与Maven无关,而是与我如何运行.jar有关。我编写了一些代码,并用Maven将其打包为.jar。我和他一起跑的
java target/gs-maven-0.1.0.jar
并在操作中得到错误。实际上,您需要-jar
选项:
java -jar target/gs-maven-0.1.0.jar
我也知道了,在删除m2文件夹(C:\Users\username.m2)并更新maven项目后,问题得到了解决。将此添加到pom.xml文件中:
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>sample.HelloWorldApplication</mainClass>
</transformer>
</transformers>
</configuration>
sample.helloworld应用程序
并添加项目的类名(完整路径)以及包名,如“com.packageName.className”,其中包含包含“run”方法的主方法。
而不是你的“?”,写${mainClass},它会自动得到你上面提到的类名
然后尝试命令mvn clean install和mvn-jar“jar\u file\u name.jar”服务器“yaml\u file\u name.yml”
我希望它能正常工作,服务器将在指定的端口启动。我收到了这个错误(主类的classNotFoundException),我实际上更改了pom版本,所以maven再次安装,然后错误消失。请按照下面的代码片段操作。。它起作用了
<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.xyz</groupId>
<artifactId>test</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>TestProject</name>
<description>Sample Project</description>
<dependencies>
<!-- mention your dependencies here -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xyz.ABC.</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>
</project>
4.0.0
com.xyz
测试
罐子
0.0.1-快照
测试项目
样本项目
org.apache.maven.plugins
maven编译器插件
3.8.1
1.8
1.8
org.apache.maven.plugins
maven汇编插件
3.1.1
com.xyz.ABC。
带有依赖项的jar
组装
包裹
单一的
请注意,您必须在
标记内提供主类的完整分类类名(类名包括不带.java
或.class
的包名)。TLDR:检查pom.xml文件内的packaging
元素是否设置为jar
像这样-jar
。如果将其设置为pom
,则即使在清理和构建项目之后,也不会创建目标文件夹,Maven可执行文件将无法找到.class
文件(因为它们不存在),之后会出现错误:无法找到或加载主类.package.name.MainClass
在Netbeans 8.2中创建Maven POM项目后,默认的POM.xml
文件的内容如下-
<?xml version="1.0" encoding="UTF-8"?>
<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.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
4.0.0
com.mycompany
这对我很有效
我在pom.xml中的属性中添加了以下行
<properties>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
3.1.1
对于我,我添加了
<packaging>jar</packaging>
jar
并删除了默认的spring boot maven插件
<!-- remove this plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> -->
在执行时添加-Xdiag
选项。这是额外的“诊断”。这不会解决问题,但会增加更多的de
<properties>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<packaging>jar</packaging>
<!-- remove this plugin
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> -->