[英]jar finding main class on my computer, but not finding on someone else's
我的程序 jar 与 maven 打包在一起。 我设置了清单文件以了解我的主要 class 在哪里。 它在我的机器上执行没有问题。 但是,当我将 jar 给朋友进行 beta 测试时,他们得到了无法找到主要 class 的错误。 我们正在运行相同版本的 JRE
这是我为此看到的其他堆栈溢出答案中的建议问题。
我已经解压缩了 jar 以确保清单文件实际上正确设置了主 class 的位置,并且确实如此。 那么这里的问题可能是什么?
编辑:用于构建清单的 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
项目结构:
您需要在pom.xml
中配置maven-jar-plugin
。 这个插件负责打包和创建manifest.MF
。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>your.package.MainClass</mainClass>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
您的 maven-assembly-plugin 配置看起来不错,但 mainClass package 名称看起来很奇怪。 通常,您不会将 class 名称作为 package 的一部分。
我建议从你的 mainClass package 中删除最后一个“.MyCloset”:
...
<manifest>
<mainClass>com.dreadylocks.MyCloset</mainClass>
</manifest>
...
也就是说,除非您确实有一个名为 MyCloset 的目录,其中包含您的 MyCloset class。 无论哪种方式,您和您的朋友运行 jar 的位置或方式之间都可能存在差异。
如果您都使用java -jar /path/to/jar/myjar.jar运行,那么您可能正在从com/mydreadylocks/MyCloset运行,而它们正在从com/mydreadylocks运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.