自己的写的jar包如何运行了?在window上c写的exe当然容易了,jar包可以通过如下方式比如有jar包publish.jar,此jar包不依赖任何jar包,那么:
JAVA –JAR Hello.jar
即可完成。不过需要注意的是Hello.jar必须要在Manifest.mf指明入口函数(我的package是com.byinsight.publish,主类是Publish)
Manifest-Version: 1.0
Main-Class: com.byinsight.publish.Publish
如此就可以执行你的jar包了。但是如果jar依赖于别的jar包才能运行怎么办?你可以把这些jar包放入%Java_home%/jre/lib/ext中,此时修改classpath时没有用的。或者通过java –cp。比如我的jar包在路径在C:/Program Files/Java/jre6/mylib中。我可以新建一个bat文件,内容如下:
cd C:/Program Files/Java/jre6/mylib
"C:/Program Files (x86)/Java/jre1.6.0_03/bin/java" –cp aa.jar;bb.jar c:/publish.jar com.byinsight.publish.Publish
Jar包的分隔linux系统下用冒号,windows下用分号注意此时我的运行jar和依赖的jar不在一个目录下,否则c:/publish.jar可以去掉。这样这个bat文件和jar包交给客户就行了,如果jar位置变了只需要改变文件夹路径即可。但是还有一个问题,如果所需要的jar包太多了怎么办?固然可以通过dir /b *.jar >> t.txt先将所有jar倒入到文本中在通过notepad之类的整理好,难道没有更好的方法吗?比如 java –cp *.jar 之类的。当然有了!如下:
cd C:/Program Files (x86)/Business Objects/common/4.0/java/lib
java -Djava.ext.dirs=. -cp c:/publish.jar com.byinsight.publish.Publish
只需要指明目录即可不用一个一个的把jar包放在里面!这样做的效果就相当于之前的把jar包放进了%Java_home%/jre/lib/ext中,因为指明了ext的系统变量。关于java类加载可以参考http://en.wikipedia.org/wiki/Java_Classloader。也可以通过一个小程序看看你的ext目录:
public class Test {
public static void main(String args[]){
Properties properties = System.getProperties();
System.out.println(properties.getProperty("java.ext.dirs"));
}
}