用ant编译java源代码

时间:2015-05-12 02:01:11

标签: java ant

我有一个已知成功编译的Java源代码包。我试图用ant编译包(build.xml文件存在)。当我运行ant时,所有Java import语句都会生成类型为

的错误消息
  

导入java.awt.geom.Path2D无法解析" (具体消息取决于导入的内容)

显然,包路径未定义,我不知道请求的导入在文件系统中的位置。我假设我知道设置$CLASSPATH将使程序编译的路径。我正在使用opensuse 13.2,我安装的java信息是:

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)

有人能指出我在哪里找到java包以及如何获取ant来编译源代码?

用于编译源代码的命令行是: 蚂蚁

build.xml与运行ant的目录相同,其中也包含src目录。这是一个工作项目,我只是不知道如何配置标准库位置(我不是任何一种java类型)。

更新

我找到了/usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar中openjdk库的路径,并试图编译2种不同的方法,但仍然得到导入无法解析错误消息。

使用-lib选项进行编译不起作用:

ant -lib /usr/lib64/jvm/java-1.8.0-openjdk-1.8.0/jre/lib/rt.jar

设置CLASSPATH环境变量不起作用:

export CLASSPATH = / usr / lib64 / jvm / java-1.8.0-openjdk-1.8.0 / jre / lib / rt.jar

build.xml的内容是:



<?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>
&#13;
&#13;
&#13;

任何想法为什么导入似乎不起作用?

谢谢!

进一步更新。

我在build.xml中添加了一个类路径定义,如下所示,仍然没有乐趣。我已经很多年没有使用过Java了,所以我在这里深入了解,帮助我们非常感激。

&#13;
&#13;
  <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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

可能是你的javac和java符号链接指向不同的地方

比较这两个命令,看看它们是否指向大致相同的区域:

which javac
which java