Set ant bootclasspath: JDK 1.7 has a new javac warning for setting an older source without bootclasspath

删除回忆录丶 提交于 2019-12-06 18:36:41

问题


How do I set the ant bootclasspath in conjunction with -source 1.5 -target 1.5?

How can this not be a hardcoded path to the 1.5 JDK? Can I set an environment variable to bootclasspath similar to how JAVA_HOME can be used from ant?

Ideally I would like to do something like set an environment variable or pass an argument to ant.


回答1:


Here's an illustration of how you might fetch the Java 5 boot classes location from an environment variable, then use it.

First, set the environment variable - say JAVA5_BOOTCLASSES. The property task gives you access to the environment, then the bootclasspath argument of the javac task passes the setting to the compiler.

<property environment="env" />
<property name="java5.boot.classpath" value="${env.JAVA5_BOOTCLASSES}" />

<javac source="1.5" target="1.5"
       bootclasspath="${java5.boot.classpath}"
       ...
/>

Note that if the environment variable is not set, Ant will ignore it and proceed without - so the compiler will fall back to the default boot classpath.

Another option, if appropriate, is to switch off the warnings, and not bother with the bootclasspath. Something like

<javac srcdir= ... >
    <compilerarg arg="-Xlint:-options" />
</javac>

But that's likely to expose you to some subtle bugs.




回答2:


It's worth noticing that variable JAVA5_BOOTCLASSES should contain all needed libraries not just rt.jar. In my case it was also jce.jar So it's good to set this variable using this simple snippet when in *nix environment:

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


来源:https://stackoverflow.com/questions/7260697/set-ant-bootclasspath-jdk-1-7-has-a-new-javac-warning-for-setting-an-older-sour

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!