windows和linux执行jar

windows:
假设要执行的文件为D:/test/Test.class
1.在cmd下进入D盘
2.执行java test.Test 或者 java test/Test 都可以
3.如果Test中关联了其它jar包,这需要通过如下方式执行,假设jar文件在test/lib下
   java -classpath .;lib/*  test.Test
   说明如下:  
   注意这里使用了-classpath参数:
   "."代表当前路径,这是java执行时的默认路径,所以在执行了classpath后需要手工加上这个路径,否则会提示找不到要执行的类。
   ";"用来隔开两个路径
   "lib/*"表示lib下的所有jar文件,如果只使用某一个jar,可以具体指定,如"lib/XX.jar"  
linux:
假设要执行的文件为/usr/local/test/Test.class
1.在shell下进入/usr/local
2.执行方式如下
   java -classpath . test.Test
   说明:linux下执行.class时,需要指定-classpath,这与linux的环境变量设置方式有关,linux不提倡指定".",而windows在设置CLASS_PATH环境变量时一般都加上这个".",这么说明白了吧
3.如果关联了其它jar文件,执行方式如下
   java -classpath .:lib/*
   说明:与windows相似,除了分隔符需要使用linux的分隔符":"      .号也可以用$CLASSPATH代替



Linux/Unix下读取lib目录下所有包生成classpath的Shell


做了一个 Java 程序放在 Solaris 下运行,用到许多的第三方包,有 *.zip 的和 *.ja r的,放在 lib 目录下,然后写了一个 shell 脚本来运行那个 java 程序,那就要在 classpath 中包含所有在 lib 中的第三方包。

原来的做法是在 classpath中把lib目录中一个个的包文件名用冒号连缀起来,比如
classpath=.:lib/a.jar:lib/b.jar:lib/c.jar:lib/d.zip
java -classpath $classpath com.unmi.Main

碰到程序升级,在lib中增加或减少了包文件,又要再重新修改那个启动 java 程序的 shell 脚本,甚是麻烦。由此想写个 shell,功能是能列举lib目录下所有第三方包,用冒号连缀成一个 classpath 变量,这样的话,无论在 lib 目录中增减包,都不需要再次修改那个启动 java 程序的 shell 脚本,就像 tomcat,无论是 common/lib 还是 app/WEB-INF/lib 中的第三方包,即放即用。

记得在以前一个公司,有见过这样的脚本,不过记不清了,大致是用 while 循环来生成那样一个classpath 变量的。

还好在网上有高人出手相救,在 CSDN 发了一个贴:

http://community.csdn.net/Expert/topic/5671/5671131.xml?temp=.7013971

过一天就有人回复,完成这一功能的代码是:

#!/bin/sh

_jar=`ls | grep "..*\.zip$"`
_zip=`ls | grep "..*\.jar$"`
_classpath="${_jar} ${_zip}"
classpath=`echo ${_classpath} | sed -e 's/ /:/g'`
echo ${classpath}

-这里根据我们前面的需求,是要列出 lib 目录下的 *.zip 或 *.jar 包,所以 shell 改写为:



#!/bin/sh

_jar=`ls lib | grep "..*\.zip$"`  #列举lib目录下的 *.zip 文件
_zip=`ls lib | grep "..*\.jar$"`  #列举lib目录下的 *.zip 文件
_classpath="${_jar} ${_zip}"
classpath=`echo ${_classpath} | sed -e 's/ /:lib\//g'`   #包名前都要带个 lib/
echo ${classpath}

这样,你就可以使用这个 classpath 变量了

java -classpath .:${classpath} com.unmi.Main #把当前目录 . 也加到 classpath 中

最后回头来想想这也就是在原来的 JRE 版本需要手工处理这些事情,如果能用上新版 6.0 Mustang JRE,就可以用它的新特性之一,classpath 通配符,java -classpath .;lib\*.jar:lib\*.zip 了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值