20. Juni 2007

ANT Task "JAVAC" aus JDeveloper starten - Problem mit unterschiedlichen JDKs

Problem: JDeveloper wird z.B. mit JDK 1.5 gestartet. Über ein ANT-Buildfile hat man eine JAVAC-Task zum Kompilieren der Sourcen mit dem 1.4er Compiler definiert. Bei der Ausführung kommt es zu Laufzeitfehlern bedingt durch API-Unterschiede, z.B.

java.lang.NoSuchMethodError: java.math.BigDecimal.(I)V


Ursache: Obwohl Ant im JDev so konfiguriert ist, dass es unter 1.4 läuft, wird dennoch die rt.jar von 1.5 geladen.

Lösung: Verwendung des bootclasspath-Attributs unter Angabe des Pfads zur rt.jar

<target name="compile" description="Compile Java source files">
<javac destdir="${output.dir}" classpathref="classpath"
debug="${javac.debug}" nowarn="${javac.nowarn}"
bootclasspath="${jdk.path}lib/rt.jar"
deprecation="${javac.deprecation}" encoding="Cp1252" source="1.4">
<src path="src"/>
</javac>
</target>

Keine Kommentare: