【问题标题】:Creating a java application with a mainClass using Maven in Eclipse - 'Could not find the main class'在 Eclipse 中使用 Maven 创建带有 mainClass 的 java 应用程序 - “找不到主类”
【发布时间】:2012-11-20 10:09:12
【问题描述】:

我正在尝试制作一个可执行的 JAVA 程序。该程序的源代码在源文件夹中有许多不同的包。当我在下面的 pom.xml 文件中设置 mainClass 属性并将其作为 maven 构建运行时,目标为“包”,它会创建 myapplication.jar。当我尝试使用

打开它时
java -jar myapplication.jar

我收到消息:

'找不到主类:xxx.yyy.MainClass。程序将退出。

以下是我的 pom.xml 文件的摘录:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>
        <manifest>
          <addClasspath>true</addClasspath>
          <mainClass>xxx.yyy.MainClass</mainClass>
        </manifest>
      </archive>
    </configuration>
    <executions>
        <execution>
            <id>make-a-jar</id>
            <phase>compile</phase>
            <goals>
              <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

在 MainClass.java 中(在包 xxx.yyy 中)我有:

public static void main(String[] args) {
  // My Code
}

如果我解压 JAR 文件并查看 META-INF 文件夹中的 MANIFEST.MF 文件,它包含以下行:

Main-Class: xxx.yyy.MainClass
Class-Path: aaa.jar bbb.jar ccc.jar

其中 aaa.jar、bbb.jar 和 ccc.jar 是 Maven 自动下载的 jar 文件,因为项目依赖于它们。 这两行肯定都以换行结束。

另外,当我浏览到与解压后的 JAR xxx/yyy/MainClass.class 相关的文件夹时!

感谢您的帮助。

【问题讨论】:

  • 你想如何运行它?你的类路径是什么?
  • 嗨,戴夫,当我遇到错误时,我正在尝试使用 java -jar myapplication.jar 运行它。类路径似乎是 Maven 在 MANIFEST.MF 文件中自动生成的,格式为:Class-Path: aaa.jar bbb.jar ccc.jar - 这些是 Maven 自动下载的 jar 文件,因为它们是项目的依赖项。
  • 可能午饭后我有点糊涂了,你为什么要在编译阶段执行jar目标呢?
  • 是 xxx.yyy.MainClass 在你的 src/main/java 中还是一个依赖?

标签: java eclipse maven classpath executable


【解决方案1】:

我不确定这是否是导致此问题的原因,因为错误消息不适合,但请注意 jar 选项的文档指出:

“使用此选项时,JAR 文件是所有用户类的来源,其他用户类路径设置将被忽略。”

所以我怀疑

Class-Path: aaa.jar bbb.jar ccc.jar

会起作用的。

【讨论】:

    【解决方案2】:

    我刚刚根据您的要求创建了一个 Maven 项目。这工作正常。

    我已经上传到这里供您参考。 https://www.dropbox.com/s/1yuy9nfdj7mz4ec/testPackage.zip

    这很好用。请注意,我使用的是maven-2.0.9

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 2012-12-30
      • 1970-01-01
      • 2015-06-11
      相关资源
      最近更新 更多