gpt4 book ai didi

java - 用ant编译java源码

转载 作者:行者123 更新时间:2023-12-01 06:28:15 24 4
gpt4 key购买 nike

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

The import java.awt.geom.Path2D cannot be resolved" (the specific message depends on what is being imported)

很明显,包路径没有定义,我不知道请求的导入在文件系统中的什么位置。我假设如果我知道设置 $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 种不同的方式但仍然得到imports cannot be resolved 错误信息。

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

最佳答案

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

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

which javac
which java

关于java - 用ant编译java源码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30180506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com