我有一个已知成功编译的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;
任何想法为什么导入似乎不起作用?
谢谢!
进一步更新。
我在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>
&#13;
答案 0 :(得分:0)
可能是你的javac和java符号链接指向不同的地方
比较这两个命令,看看它们是否指向大致相同的区域:
which javac
which java