最近在写一些java程序,但是在发布的时候却遇到一些问题,感觉很头痛.所以特地上网搜寻了一些资料,终于搞明白了问题的所在,在此特地记录一下.
java程序写好,往往会有多个class文件.如果一起发布,会觉得比较零散.比较好的做法是打成一个jar包来发布.
jar包怎么打,其实很简单.但是怎么用就有点复杂.jar包的使用有2种.
1.把jar包当成库文件使用,把jar包放到系统的classpath中,然后执行jar包中的类
2.把jar当成可执行的文件使用,让系统自动找到jar包中的entry point
前者的用法是
java -cp foo.jar bar
后者的用法是
java -jar foo.jar
如果bar不引用其他类库,两种方法都没问题.但是如果bar引用了其他类库,那么就麻烦了.
比如说bar引用了bar2这个类,它存在于foo2这个jar库中,那么怎么办?
方法1:
java -cp foo.jar:foo1.jar bar
方法2:
java -jar foo.jar (此时要在jar包的manifest文件中加一句 class-path: foo2.jar)
如果采用方法2,那么需要在打包前,在manifest文件中指明class-path.这里的classpath可以是绝对路径,也可以是相对路径.但是采用绝对路径,一旦发布到客户机,很难保证客户机上的配置和开发机一致.所以,一般不用绝对路径.
那么相对路径怎么用,我觉得,一般需要在发布时,保证你用到的类库和你的jar包都在一个目录下,这样就可以采用相对路径,比如说写个类库名即可.但是如果客户端没法做到这一点,那么怎么办?
那只有用方法1了.
我目前的环境使我觉得,采用方法1的可移植性更好
阅读(2731) | 评论(0) | 转发(0) |