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 ??? 组装 包裹 单一的 ... ... 如何修复这些错误?我建议的第一件事是使用 [

我使用的是Java Maven程序,我不知道输入什么作为
。我已经尝试了基于的各种方法,但它们并没有解决错误

每次它都说:

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 installmvn-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> -->