I have a Java source code package which is known to successfully compile. I am attempting to compile the package with ant (the build.xml file is present). When I run ant all the Java import statements generate an error message of the type:
The import java.awt.geom.Path2D cannot be resolved" (the specific message depends on what is being imported)
Clearly the package paths are not defined and I have no idea where the requested imports live in the filesystem. I assume if I know the paths that setting $CLASSPATH
will get the program to compile. I am using opensuse 13.2 and my installed java info is:
java -version
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
Can anyone point me to where to find the java packages and how to get ant to compile the sources?
The command line used to compile sources is: ant
build.xml is in the same directory that ant is run from which also contains the src directory. This is a working project, I just don't know how to configure standard library locations (I'm not a java type by any means).
Update.
I have located the path to the openjdk libraries at /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar and have tried to compile 2 different ways but still get imports cannot be resolved error messages.
Compiling with -lib option does not work:
ant -lib /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar
Setting the CLASSPATH environment variable does not work:
export CLASSPATH=/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar
ant
The content of build.xml is:
<?xml version="1.0"?>
<project name="MazR" default="jar" basedir=".">
<property name="jar.file" value="${ant.project.name}.jar"/>
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="dist.dir" value="dist"/>
<property name="applet.html" value="applet.html"/>
<taskdef resource="checkstyletask.properties"/>
<target name="init">
<mkdir dir="${build.dir}"/>
<mkdir dir="${dist.dir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}" debug="on"
includeantruntime="false">
<compilerarg value="-Xlint"/>
</javac>
</target>
<target name="jar" depends="compile">
<jar destfile="${dist.dir}/${jar.file}" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="com.nullprogram.maze.RunMaze"/>
</manifest>
</jar>
<copy file="${applet.html}" tofile="${dist.dir}/index.html"/>
</target>
<target name="run" depends="jar">
<java jar="${dist.dir}/${jar.file}" fork="true"/>
</target>
<target name="clean">
<delete dir="${build.dir}"/>
<delete file="${jar.file}"/>
</target>
<target name="check">
<checkstyle config="checkstyle.xml">
<fileset dir="src" includes="**/*.java"/>
</checkstyle>
</target>
<target name="format" description="Run the indenter on all source files.">
<apply executable="astyle">
<arg value="--mode=java"/>
<arg value="--suffix=none"/>
<fileset dir="${src.dir}" includes="**/*.java"/>
</apply>
</target>
<target name="applet" depends="jar" description="Run the applet version.">
<exec executable="appletviewer">
<arg value="${dist.dir}/index.html"/>
</exec>
</target>
<target name="javadoc" description="Generate Javadoc HTML.">
<javadoc destdir="${dist.dir}/javadoc">
<fileset dir="${src.dir}" includes="**/*.java" />
</javadoc>
</target>
</project>
Any idea why import does not seem to work?
Thanks!
Further update.
I added a classpath definition to the build.xml as below, still no joy. I have not used Java in many, many years so I am way out of my depth here, help desperately appreciated.
<property name="java.class.path" location="/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar"/>
<target name="compile" depends="init">
<javac srcdir="${src.dir}" destdir="${build.dir}" debug="on"
includeantruntime="false">
<compilerarg value="-Xlint"/>
<classpath>
<pathelement path="${java.class.path}/"/>
</classpath>
</javac>
</target>
<javac>
call and the definition of its classpath if it is referenced by aclasspathref
. Setting theCLASSPATH
environment variable will not help, the classpath for ajavac
task in an Ant build is set by the build.xml – Ian Roberts