【发布时间】: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