首页 文章

用ant编译java源代码

提问于
浏览
3

我有一个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来编译源代码?

用于编译源代码的命令行是: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

Ant

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>

知道为什么导入似乎不起作用?

谢谢!

进一步更新 .

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

<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>

1 回答

  • 0

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

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

    which javac
    which java
    

相关问题