设置bootclasspath: JDK 1.7有一个新的javac警告,用于设置没有引导classpath的旧源代码



如何设置ant bootclasspath与-source 1.5 -target 1.5相结合?

这怎么可能不是1.5 JDK的硬编码路径呢?我可以将环境变量设置为引导类路径,类似于如何从ant中使用JAVA_HOME吗?

理想情况下,我想做一些事情,比如设置一个环境变量或传递一个参数给ant。

下面的示例说明了如何从环境变量中获取Java 5引导类位置,然后使用它。

首先,设置环境变量—例如JAVA5_BOOTCLASSESproperty任务允许您访问环境,然后javac任务的bootclasspath参数将设置传递给编译器。

<property environment="env" />
<property name="java5.boot.classpath" value="${env.JAVA5_BOOTCLASSES}" />
<javac source="1.5" target="1.5"
       bootclasspath="${java5.boot.classpath}"
       ...
/>

请注意,如果没有设置环境变量,Ant将忽略它并继续执行—因此编译器将退回到默认的引导类路径。

另一种选择,如果合适的话,是关闭警告,而不使用引导类路径。就像
<javac srcdir= ... >
    <compilerarg arg="-Xlint:-options" />
</javac>

值得注意的是,变量JAVA5_BOOTCLASSES应该包含所有需要的库,而不仅仅是rt.jar。在我的例子中,它也是jce.jar,所以在*nix环境中使用下面的简单代码片段设置这个变量是很好的:

export JAVA5_BOOTCLASSES=""
for i in /usr/lib/jvm/java/jre/lib/*.jar; do 
    export JAVA5_BOOTCLASSES=$JAVA5_BOOTCLASSES:$i
done

最新更新