原文:http://www.iteye.com/problems/35823
模拟一个my.jar,其中A是整个jar的入口点。
- package app.jar;
- public class A {
- public static void main(String[] args) {
- System.out.println("This info is from A !");
- new B().getInfo();
- }
- }
- package app.jar;
- public class B {
- public void getInfo() {
- System.out.println("This info is from app.jar.B !");
- }
- }
命令行下的操作如下:
引用
D:\Program Files\test>javac -d . B.java
D:\Program Files\test>javac -d . A.java
// 这一步,做的jar是模拟你的,没有入口点的jar
// 即不能独立运行的jar
D:\Program Files\test>jar -cf my.jar app
// 这里修改jar的入口点,注意包名的点换成了 /
D:\Program Files\test>jar -ufe my.jar app/jar/A
D:\Program Files\test>java -jar my.jar
This info is from A !
This info is from app.jar.B !
D:\Program Files\test>
PS:jar包的对立运行,需要客户端安装了Java Runtime才行。我这里为了简便,使用了在命令行下的运行。
(用套壳软件将jar打包为exe)