【发布时间】:2013-01-03 22:26:27
【问题描述】:
我做了以下测试:
代码
public class FooMain {
public static void main(String args[]) throws ClassNotFoundException {
Class klass = Class.forName("com.sun.xml.internal.ws.spi.ProviderImpl");
}
}
$CLASSPATH 环境变量
echo $CLASSPATH
/usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar:.
jar tvf /usr/lib/jvm/java-7-openjdk-i386/jre/lib/rt.jar | grep com.sun.xml.internal.ws.spi.ProviderImpl
1742 Wed Oct 24 18:52:52 EEST 2012 com/sun/xml/internal/ws/spi/ProviderImpl$1.class
1349 Wed Oct 24 18:52:52 EEST 2012 com/sun/xml/internal/ws/spi/ProviderImpl$2.class
12412 Wed Oct 24 18:52:52 EEST 2012 com/sun/xml/internal/ws/spi/ProviderImpl.class
所以寻找的类在 $CLASSPATH 上。
但是,在 Ant 的 java 任务和 fork 设置为 "false" 的情况下运行上述代码会失败,并且只有在 fork 设置为 "true"。
然而,这与ANT in Action book 中所写的内容背道而驰,它在 pg 中注明。 152 基本 Ant 的 java 任务使用 Ant 类路径运行,其中包括“CLASSPATH 环境变量中的所有内容”。
那么为什么Ant的java任务在fork设置为“false”并且只有fork才成功的情况下找不到要找的类> 即使在这两种情况下类都在 $CLASSPATH 上,也设置为“true”?
【问题讨论】: