0

我正在尝试制作一个可执行的 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 相关的文件夹时,它就在那里!

谢谢你的帮助。

4

2 回答 2

0

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

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

所以我怀疑

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

将工作。

于 2012-11-20T11:42:17.177 回答
0

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

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

这工作得很好。请注意,我正在使用maven-2.0.9.

于 2012-11-20T12:15:35.627 回答