【问题标题】:Maven - error cannot find or load main classMaven - 错误无法找到或加载主类
【发布时间】:2020-08-29 04:15:17
【问题描述】:

我尝试在 Linux 上使用 Maven (mvn clean install) 构建此示例:https://github.com/oltzen/JavaCppExample。 成功构建后,当我运行: java de.oltzen.javacppexample.Abc :它说'无法加载或找不到主类'

视频教程 (https://www.youtube.com/watch?v=LZrrqZLhtmw) 使用 Eclipse,它使用 Run as .. Java Application 运行程序

POM 文件是否缺少某些内容?

我尝试在 POM 中添加此插件,但没有成功:

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>de.oltzen.javacppexample.Abc</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

我正在从 JavaCppExample/target/classes/ 执行:-

/classes 文件夹包含包文件夹:de/oltzen/javacppexample/ 最后一个文件夹包含类文件 Abc.class

所以我运行命令:
java de.oltzen.javacppexample.Abc

/target 文件夹包含: 1) classes [包含包的文件夹] 2) JavaCppExample.jar 3)maven存档 4) 行家状态

请帮忙

【问题讨论】:

  • 尝试在 eclipse 中清理项目几次或重新启动 eclipse 然后再试一次。
  • 你想创建一个超级 JAR 吗?
  • @SamuelAudet 不,只需构建并执行它。无论是简单地使用主类还是使用 Jar 文件
  • @Smile 我正在使用命令行构建项目。
  • 打开你的jar文件,看看是否有manifest.mf文件,该文件应该包含主类属性,那么只有它才能工作

标签: java eclipse maven pom.xml javacpp


【解决方案1】:

我为 maven 复制依赖项添加了以下插件并执行了 java -jar javaCppExample.jar [来自 /target 文件夹],它工作正常。谢谢大家!

[只需使用 mvn clean install 构建]

<plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <target>1.8</target>
                    <source>1.8</source>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib/</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


            <plugin>
                <!--  Build an executable JAR -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>de.oltzen.javacppexample.Abc</mainClass>
                        </manifest>
                    </archive>

                </configuration>
            </plugin>

【讨论】:

    【解决方案2】:

    如果您只想通过 maven 运行 prgramm,请使用 exec-maven-plugin。

              <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                  <execution>
                    <goals>
                      <goal>java</goal>
                    </goals>
                  </execution>
                </executions>
                <configuration>
                  <mainClass>de.oltzen.javacppexample.Abc</mainClass>
                </configuration>
              </plugin>
    
    

    在这里探索更多 => https://www.mojohaus.org/exec-maven-plugin/index.html

    如果你想以 jar 的形式构建和运行,请使用程序集插件

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                  <appendAssemblyId>true</appendAssemblyId>
                  <descriptors>
                    <descriptor>${project.basedir}/assembly/assembly.xml</descriptor>
                  </descriptors>
                  <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                  </descriptorRefs>
                  <archive>
                    <manifest>
                      <mainClass>de.oltzen.javacppexample.Abc</mainClass>
                    </manifest>
                  </archive>
                </configuration>
                <executions>
                  <execution>
                    <id>make-assembly</id>
                    <phase>install</phase>
                    <goals>
                      <goal>single</goal>
                    </goals>
                  </execution>
                </executions>
              </plugin>
    
    

    详细了解 Maven 程序集插件以根据您的需求进行定制。

    【讨论】:

    猜你喜欢
    • 2015-06-04
    • 2012-06-22
    • 2023-02-19
    • 2017-07-30
    • 2016-05-21
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多