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不仅仅是设置一个目录,这个目录还有其特别之处吧,请明白人指点一下,多谢了。 

解决方案 »

  1.   

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

  2.   

    System.getProperty("java.ext.dirs") 可以得到 lib
      

  3.   

    系统属性 java.ext.dirs 的值为查找扩展类库中类的路径,默认为 JRE安装目录\lib\ext
    java -Djava.ext.dirs=lib -cp . lius.axis.demo.generated.Main
    红色部分是启动 Java 程序时用来修改默认查找扩展类库中类的路径的。
      

  4.   

    -Djava.ext.dirs这个指定extend classloader的classpath,还有一个system classloader的classpath用于载入应用服务器相关的jar文件。我们一般配置的都是application classloader的classpath.
      

  5.   

    这个跟 Java 类加载策略有关,更详细的介绍看这里 http://dev.yesky.com/496/2158996.shtml
      

  6.   

    -D<name>=<value>
                   set a system property
    是设置一个系统属性
    而java.ext.dirs这个系统属性代表的含义就是
    Path of extension directory or directories
    扩展目录路径 楼上很多都已说清楚了还有很多系统属性如图