当前位置: 代码迷 >> J2SE >> java -Djava.ext.dirs=lib -cp . TestClient //-Djava.ext.dirs=lib 是做什么用的 ?解决方法
  详细解决方案

java -Djava.ext.dirs=lib -cp . TestClient //-Djava.ext.dirs=lib 是做什么用的 ?解决方法

热度:658   发布时间:2016-04-24 12:49:02.0
java -Djava.ext.dirs=lib -cp . TestClient //-Djava.ext.dirs=lib 是做什么用的 ??
JAVA -Djava.ext.dirs=lib 是将jVM的java.ext.dirs设置为指定的目录了,但具体的做用是什么?
我试着用axis调用web服务
按照例子,我要执行自己编译的web services类,用的命令是:java -Djava.ext.dirs=lib -cp . lius.axis.demo.generated.Main
可以执行,但用 java lius.axis.demo.generated.Main
执行时,提示
java.lang.NoClassDefFoundErro r: javax/xml/rpc/Service 
这个类是在jaxrpc.jar中定义的,我把它加到系统的CLASSPATH的最前面也不行。 
看来,-Djava.ext.dirs=lib不仅仅是设置一个目录,这个目录还有其特别之处吧,请明白人指点一下,多谢了。

------解决方案--------------------
找不到类,是classpath设置不对吧
或者程序里的import类的路径不对

------解决方案--------------------
System.getProperty("java.ext.dirs") 可以得到 lib

------解决方案--------------------
系统属性 java.ext.dirs 的值为查找扩展类库中类的路径,默认为 JRE安装目录\lib\ext。
java -Djava.ext.dirs=lib -cp . lius.axis.demo.generated.Main
红色部分是启动 Java 程序时用来修改默认查找扩展类库中类的路径的。
------解决方案--------------------
-Djava.ext.dirs这个指定extend classloader的classpath,还有一个system classloader的classpath用于载入应用服务器相关的jar文件。

我们一般配置的都是application classloader的classpath.
------解决方案--------------------
这个跟 Java 类加载策略有关,更详细的介绍看这里 http://dev.yesky.com/496/2158996.shtml。
------解决方案--------------------
-D<name>=<value>
set a system property
是设置一个系统属性
而java.ext.dirs这个系统属性代表的含义就是
Path of extension directory or directories
扩展目录路径 楼上很多都已说清楚了

还有很多系统属性如图
  相关解决方案