我开发了一个简单的java程序,它只有一个主类如下:
public class HelloTest {
public static void main(String[] args){
System.out.println("@@@@@@@@@@@@ Hello World! From HelloTest!! ");
}
}
我使用maven程序集插件将这个程序打包为一个可运行的jar,jar包结构如下:
Test3-0.0.1-assembly.jar
|-----META-INF
| |
| |---MANIFEST.MF
|
|-----Test3-0.0.1.jar
Manifest-Version: 1.0
Build-Jdk: 1.6.0_18
Class-Path: Test3-0.0.1.jar
Created-By: Apache Maven
Main-Class: com.example.HelloTest
Archiver-Version: Plexus Archiver
运行'mvn clean packge'后,maven在目标目录中生成程序集jar,但程序集jar的清单文件错过'Class-Path'字段,所以我必须添加'Class-用winrar手工制作的路径。我不知道它是否是maven程序集插件bug ...
最后,我在windows中使用'java -jar Test3-0.0.1-assembly.jar',它运行正常。 但我将jar复制到linux(ubuntu),使用相同的命令'java -jar Test3-0.0.1-assembly.jar',它显示错误:无法找到或加载主类com.example.HelloTest < /强>
我真的不知道为什么它在两个系统中显得如此不同,只是同一个罐子。任何人都可以告诉如何解决问题(让jar可以在linux中运行)?感谢。
答案 0 :(得分:0)
我使用maven-jar-plugin
生成MANIFEST
代。这是我的配置,也许这会有所帮助:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>