【发布时间】:2020-10-24 12:38:55
【问题描述】:
我的程序的 jar 用 maven 打包。我设置了清单文件以了解我的主类在哪里。它在我的机器上执行没有问题。但是,当我将 jar 给朋友进行 beta 测试时,他们得到了找不到主类的错误。我们正在运行相同版本的 JRE
这是我为此看到的其他堆栈溢出答案中的建议问题。
我已解压缩 jar 以确保清单文件实际上正确设置了主类的位置,并且确实如此。那么这可能是什么问题呢?
编辑:用于构建清单的 pom.xml 的相关部分
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.dreadylocks.MyCloset.MyCloset</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
当我解压 jar 时,这些是 META-INF/MANIFEST.MF 的内容
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: saman
Build-Jdk: 1.8.0_251
Main-Class: com.dreadylocks.MyCloset.MyCloset
项目结构:
【问题讨论】:
-
我的包是 com.dreadylocks.MyCloset 并且 main 在一个名为 MyCloset 的类(.java 文件)中
-
我想你的包可能只是 com.dreadylocks。您不会将类名作为包名的一部分。
标签: java manifest executable-jar