java -cp用法
原文出处:http://blog.csdn.net/zhuying_linux/article/details/7714194。感谢作者的分享
java -cp classpath
Specify a list of directories, JAR archives, and ZIP archives to search for class files. Class path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the CLASSPATH environment variable.
As a special convenience, a class path element containing a basename of * is considered equivalent to specifying a list of all the files in the directory with the extension .jar or .JAR (a java program cannot tell the difference between the two invocations).
For example, if directory foo contains a.jar and b.JAR, then the class path element foo/* is expanded to a A.jar:b.JAR, except that the order of jar files is unspecified. All jar files in the specified directory, even hidden ones, are included in the
list. A classpath entry consisting simply of * expands to a list of all the jar files in the current directory. The CLASSPATH environment variable, where defined, will be simi-larly expanded. Any classpath wildcard expansion occurs before the Java virtual
machine is started -- no Java program will ever see unexpanded wildcards except by querying the environment. For example; by invoking System.getenv("CLASSPATH").
For more information on class paths, see Setting the Class Path.
查看文档得到以上信息,以下是查找到的资料:
-cp 参数后面是类路径,是指定给解释器到哪里找到你的.class文件,
写法:
java -cp .;myClass.jar packname.mainclassname
classpath中的jar文件能使用通配符,如果是多个jar文件,要一个一个地罗列出来,从某种意义上说jar文件也就是路径。
要指定各个JAR文件具体的存放路径,相同路径有多个可使用通配符
java -cp .;c:/classes/myClass.jar;d:/classes/*.jar packname.mainclassname
packname.mainclassname为包含main方法的完全限定类名,如果在classpath中有多个还有main方法的类,通过此命令可以方便选定程序的入口。
例如:
#!/bin/sh
cd /home/work/bvpn/aaa/bin
pwd
nohup /usr/java/jdk1.6.0_11/bin/java -cp .:../lib/log4j-1.2.15.jar:/usr/java/jdk1.6.0_11/lib/dt.jar:/usr/java/jdk1.6.0_11/lib/tools.jar:/usr/java/jdk1.6.0_11/lib/:/usr/java/jdk1.6.0_11/lib/jradius-client.jar:../lib/mysql-connector-java-5.1.12-bin.jar authAgent.AuthAgentMain
2>&1 &
下面是一些遇到的问题:
1.jar -cp lib/referenced.jar -jar myworks.jar会执行报错,原因如下:
我们使用-jar选项的话java.exe会忽略-cp,-classpath,以及环境变量CLASSPATH的参数。
解决方法一:
不要使用-jar选项,直接调用含有main方法的class文件,这样-cp,-classpath以及环境变量里的CLASSPATH指定的参数就都能使用到了。
java -classpath ./lib/junit.jar:. test/Test1
解决方法二:
继续使用-jar选项,但是在MAINFEST.MF文件中指定引用到jar文件.
Class-Path: myplace/myjar.jar myplace/other.jar jardir/
另外说明一点:这个问题可能有些人遇不到,因为Java的版本不同的原因,我在Sun的JDK和IBM 1.5的JDK都遇到了这个问题,但是对于 IBM 1.4的JDK却没有类似问题
2. 批量加载包的方法:
(一)java命令引入jar时可以-cp参数,但时-cp不能用通配符(多个jar时要一个个写,不能*.jar),通常的jar都在同一目录,且多于1个。前些日子刚刚发现一个参数-Djava.ext.dirs~
如:java -Djava.ext.dirs=lib MyClass 【同样的weblogic中就有这样的参数:-Dweblogic.ext.dirs=$BEA_HOME/patch_weblogic920/profiles/default/sysext_manifest_classpath】
(二)通过Unix shell设置CLASSPATH方式加载(shell实在是方便)
CLASSPATH=`find ../lib -name *.jar|xargs|sed "s/ /:/g"`
CLASSPATH=".:$CLASSPATH
(三)cp 参数后面是类路径,是指定给解释器到哪里找到你的.class文件。使用java -cp命令可以调用一个其他目录下的带有main函数的类。格式为java -cp class文件的路径,下面的例子采用的相对路径。
String commandLine = "java -cp "+ "..\\kwicByPipeServer\\bin KWIC";
Process p = Runtime.getRuntime().exec(commandLine);
这样就可以调用了。
PS:
$BEA_HOME/wlserver_10.3/server/lib/weblogic.jar的classcompatibilityinspector-file-0.xml文件记录了可用的类~
java -cp用法的更多相关文章
- java -cp 用法介绍
java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;” 分隔,linux上是分号“:”分隔.不支持通 ...
- Java -cp 命令行引用多个jar包的简单写法(Windows、Linux
1.Windows下用法 在Windows上,可以使用 用法:java your-jar-lib-folder/* your-main-class your-jar-lib-folder为存放一堆ja ...
- java -cp
java -cp /home/hdp/log4jTest/log4j-1.2.17.jar:/home/hdp/log4jTest/testLog.jar:/home/hdp/log4jTest/co ...
- 【转】java list用法示例详解
转自:http://www.jb51.net/article/45660.htm java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对java list用法做了详解. Lis ...
- Java List 用法代码分析 非常详细
Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3 ...
- Java split用法
Java split用法 java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separat ...
- Java Enum用法详解
Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...
- java -cp通配符
JDK6支持java -cp后面跟通配符'*',试了一下发现还是需要注意: 错误方式(Wrong way): java -cp /data/apps/lib/*.jar com.chinacache ...
- java -cp & java jar的区别
java -cp java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符:window上分号“;”.Lin ...
随机推荐
- MySQL使用存储过程代替子查询
摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...
- Android 中log 找到关键log
SYS_ANDROID_EVENT_LOG1. aee_exp文件夹中有 db.fatal.00.SWT. 2. 准备工作: gat打开db.fatal.00.SWT.dbg文件,即会生成.DEC文件 ...
- 【MySQL】计算 TPS,QPS 的方式
在做db基准测试的时候,qps,tps 是衡量数据库性能的关键指标.本文比较了网上的两种计算方式.先来了解一下相关概念. 概念介绍: QPS:Queries Per Second 查 ...
- JAVA基础-File类
一.File类概述 File类是文件和目录路径名的抽象表示形式.File类可以理解为一个文件路径或者文件夹路径的JAVA表现形式,而路径又可以分为绝对路径(是一个固定路径,从盘符开始),相对路径(相对 ...
- msfvenom向apk注入payload
首先安装apt-get install apkinjector 这个东西,msfvenom重新组装apk的时候会自动调用 msfvenom -x /路径/apk android/meterpreter ...
- CSS3阴影 box-shadow的使用总结
text-shadow是给文本添加阴影效果,box-shadow是给元素块添加周边阴影效果.随着html5和CSS3的普及,这一特殊效果使用越来越普遍. 基本语法是{box-shadow:[inset ...
- hihoCoder #1043 : 完全背包(板子题)
#1043 : 完全背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说之前的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的 ...
- ES5.0集群搭建
最近在网上看到很多ES集群的搭建方法,本人在这人使用Elasticsearch5.0.1版本,介绍如何搭建es集群并安装head插件和其他插件安装方法. 一.搭建环境(2台Centos7系统服务器) ...
- Spring配置集群定时任务
正常配置定时任务的时候配置定时任务调度工厂的代码如下 <bean id="" class="org.springframework.scheduling.quart ...
- 解决JSONObject.fromObject数字为null时被转换为0
在使用JSONObject.fromObject的时候会遇到一种情况就是当对象的某一个Double型或Integer型的属性为空的时候,转JSON的时候会变成0.当一个布尔型的属性为空的时候,转JSO ...