Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251821
  • 博文数量: 47
  • 博客积分: 7052
  • 博客等级: 少将
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-19 23:32
文章分类

全部博文(47)

文章存档

2011年(2)

2010年(10)

2009年(21)

2008年(14)

我的朋友

分类:

2008-04-20 22:36:25

最近在写一些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的可移植性更好
阅读(1336) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~