最近在用maven assembly plugin开发一个程序,将程序class文件和依赖的jar包一起打成一个可执行的jar。所以用了maven assembly插件。
这是一个demo代码:
public class HelloTest {
public static void main(String[] args){
System.out.println("@@@@@@@@@@@@ Hello World! From HelloTest!! ");
}
}
这是打包后的jar文件Test3-0.0.1-assembly.jar目录:
|-----META-INF
| |
| |---MANIFEST.MF
|
|-----Test3-0.0.1.jar
这是manifest文件:
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后打出来的jar文件manifest缺少Class-Path信息,但是源码本身的Test3-0.0.1.jar在assembly jar包里,为了让程序执行,我自己手动在manifest中加了Class-Path: Test3-0.0.1.jar,不知道是我哪里配置问题,求指教。
运行java -jar Test3-0.0.1-assembly.jar,在windows下OK,但是我把jar包拷到linux(ubuntu)下运行就报错了:
Error: Could not find or load main class com.example.HelloTest
为什么同样一个jar包在两个系统中一个可以运行,一个不行呢,求大大指教啊。。。