java命令行运行设置classpath星号的作用
来源:互联网 发布:手机淘宝怎么申请品牌 编辑:程序博客网 时间:2024/05/22 00:26
java classpath 和 classpath引入和不引入星号(*) 区别:
classpath 不引入星号:如:D:\abc\ 只会到你的class路径中查找找文件;
java -jar hello.jar
如果执行的jar文件引用了其他jar文件,该怎么办?
这里hello.jar里面用到Log4j的Log
java -cp log4j-1.2.14.jar -jar hello.jar
这个想当然可以执行,实际上执行会出现ClassNotFoundException的
因为使用了 -jar 选项,环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略
正确运行方式如下:
1、
java -cp lib\log4j-1.2.14.jar;hello.jar com.dhn.Hello (com.dhn.Hello为主类)
在windows下多个jar之间以分号(;)隔开,最后还需要指定运行jar文件中的完整的主类名
2、
java -jar hello.jar
但是需要修改hello.jar中的MANIFEST.MF,通过MANIFEST.MF中的Class-Path 来指定运行时需要用到的其他jar,
其他jar可以是当前路径也可以是当前路径下的子目录。多个jar文件之间以空格隔开
以下面的MANIFEST.MF文件为例
Manifest-Version: 1.0
Main-Class: com.ibm.portalnews.entrance.Main
Class-Path: lib\commons-collections-3.2.jar lib\commons-configuration-1.5.jar lib\commons-lang-2.3.jar lib\commons-logging.jar lib\dom4j-1.6.1.jar lib\jaxen-1.1-beta-7.jar lib\jdom.jar lib\log4j-1.2.14.jar
其中Manifest-Version表示版本号,一般由IDE工具(如eclipse)自动生成
Main-Class 是jar文件的主类,程序的入口
Class-Path 指定需要的jar,多个jar必须要在一行上,多个jar之间以空格隔开,如果引用的jar在当前目录的子目录下,windows下使用\来分割,linux下用/分割
文件的冒号后面必须要空一个空格,否则会出错
文件的最后一行必须是一个回车换行符,否则也会出错
classpath 不引入星号:如:D:\abc\ 只会到你的class路径中查找找文件;
classpath 引入星号*: 如:D:\abc\* 不仅包含class路径,还包括jar文件中(class路径)进行查找.
注意classpath不支持*.jar这种方式,支持/path/to/dir/*,但是不支持子目录,子目录只能单独设置:/path/dir/*:/path/dir/subdir/*
java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时什么烦要一个个写,不能*.jar),面通常的jar都在同一目录,且多于1个。前些日子找到(发现)-Djava.ext.dirs太好。
如:
Java代码 :
java -Djava.ext.dirs=lib MyClass
java -Djava.ext.dirs=d:\Work\eclipse_workspace\Test_Project\lib;.;com.tangqiao.rpctest.ProtocalServer
如果单个jar文件,没有引用到其他jar文件,而且指定了Main-Class,可以这样运行:java -jar hello.jar
如果执行的jar文件引用了其他jar文件,该怎么办?
这里hello.jar里面用到Log4j的Log
java -cp log4j-1.2.14.jar -jar hello.jar
这个想当然可以执行,实际上执行会出现ClassNotFoundException的
因为使用了 -jar 选项,环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略
正确运行方式如下:
1、
java -cp lib\log4j-1.2.14.jar;hello.jar com.dhn.Hello (com.dhn.Hello为主类)
在windows下多个jar之间以分号(;)隔开,最后还需要指定运行jar文件中的完整的主类名
2、
java -jar hello.jar
但是需要修改hello.jar中的MANIFEST.MF,通过MANIFEST.MF中的Class-Path 来指定运行时需要用到的其他jar,
其他jar可以是当前路径也可以是当前路径下的子目录。多个jar文件之间以空格隔开
以下面的MANIFEST.MF文件为例
Manifest-Version: 1.0
Main-Class: com.ibm.portalnews.entrance.Main
Class-Path: lib\commons-collections-3.2.jar lib\commons-configuration-1.5.jar lib\commons-lang-2.3.jar lib\commons-logging.jar lib\dom4j-1.6.1.jar lib\jaxen-1.1-beta-7.jar lib\jdom.jar lib\log4j-1.2.14.jar
其中Manifest-Version表示版本号,一般由IDE工具(如eclipse)自动生成
Main-Class 是jar文件的主类,程序的入口
Class-Path 指定需要的jar,多个jar必须要在一行上,多个jar之间以空格隔开,如果引用的jar在当前目录的子目录下,windows下使用\来分割,linux下用/分割
文件的冒号后面必须要空一个空格,否则会出错
文件的最后一行必须是一个回车换行符,否则也会出错
0 0
- java命令行运行设置classpath星号的作用
- 命令行查看java classpath设置
- Java命令行设置classpath路径
- Java命令行编译和运行的错误解决--classpath
- JAVA基础梳理1:java运行环境、命令行编译执行、path和classpath作用
- java classpath里带星号*和不带星号的区别
- 命令行设置及查看java classpath设置
- 设置classpath运行java程序
- 运行Java程序-设置classpath
- java中classpath、path、JAVA_HOME的设置以及作用
- Java中设置classpath、path、JAVA_HOME的作用
- Java中设置classpath、path、JAVA_HOME的作用
- Java中设置classpath、path、JAVA_HOME的作用
- java设置classpath,path和java_home的作用
- java设置环境变量CLASSPATH以及path环境变量的作用。
- Java中设置classpath、path、JAVA_HOME的作用
- Java中设置classpath、path、JAVA_HOME的作用
- Java中设置classpath、path、JAVA_HOME的作用
- 欢迎使用CSDN-markdown编辑
- (八)JavaScript Date对象属性方法
- hibernate
- 局域网内主机之间Socket通信实现
- HTML5中canvas画图之根据触摸点画三角形
- java命令行运行设置classpath星号的作用
- 关于埋点
- https://github.com/espressif/esp8266_mp3_decoder
- ajax回调函数 异步延迟
- smtp协议
- linux文本处理 sort,grep,sed,awk,uniq 用法
- nyoj 19 擅长排列的小明 【next_permutation() 】
- java命令行下如何设置classpath类路径
- EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台