当前位置: 首页 > 知识库问答 >
问题:

Ant没有使用正确的java版本

竺捷
2023-03-14

我在安装了Javajdk(和jre)1.6的Unix机器上通过Eclipse Juno生成了一个ant文件。当在build.xml文件所在的eclipse之外的机器上运行ant时,一切都很顺利。

现在,问题是当我尝试在另一台机器上运行ant时,其中jdk和jre 1.6都安装了。这是我在运行RedHat 3的另一台机器上得到的结果(无法更改):

> ant -version
Apache Ant version 1.5.2-23 compiled on November 12 2003

> java -version
java version "1.6.0_39"
Java(TM) SE Runtime Environment (build 1.6.0_39-b04)
Java HotSpot(TM) Client VM (build 20.14-b01, mixed mode, sharing)

> javac -version
javac 1.6.0_39

> ls -l `which java`
lrwxrwxrwx 1 root root   26 Feb 13 15:22 /usr/bin/java -> /usr/java/default/bin/java*

> ls -l `which javac`
lrwxrwxrwx 1 root root   27 Feb 13 15:22 /usr/bin/javac -> /usr/java/default/bin/javac*

> ls -l /usr/java
total 8
lrwxrwxrwx 1 root root   16 Nov  7 14:19 default -> /usr/java/latest
drwxr-xr-x 7 root root 4096 Feb 13 15:02 jdk1.6.0_39/
drwxr-xr-x 7 root root 4096 Nov  7 14:18 jre1.6.0_37/
lrwxrwxrwx 1 root root   21 Feb 13 15:03 latest -> /usr/java/jdk1.6.0_39

> echo $JAVA_HOME
/usr/java/jdk1.6.0_39/bin/java

当我在build.xml文件中添加这一行时,我得到以下结果

build.xml:
<echo message="Java version: ${ant.java.version}"/>

> ant 
  [echo] Java version: 1.4

和编译错误:

  [javac] ...InputManager.java:11: error: Invalid method declaration, method name required.
  [javac]    Map<Double, List<MyObject>> loadFile(File pSelectedFile)
  [javac]              ^
  [javac] ...InputManager.java:11: error: Class or interface declaration expected.
  [javac]    Map<Double, List<MyObject>> loadFile(File pSelectedFile)
  [javac]              ^
  [javac] ...InputManager.java:33: error: Invalid character '@' in input.
  [javac]    @Override
  [javac]           ^
...

现在,问题是:我的java安装是否不正确?我和ant有什么问题吗?

下面是构建的快速摘录。xml文件:

> vim build.xml

<project basedir="." default="build" name="myProject">
  <property environment="env"/>
  <property name="ECLIPSE_HOME" value="/opt/eclipse"/>  <!-- that is also where eclipse is on my 2nd machine -->
  <property name="debuglevel" value="source,lines,vars"/>
  <property name="target" value="1.6"/>
  <property name="source" value="1.6"/>
[some stuff]
  <target name="init">
    <mkdir dir="bin"/>
    <copy includeemptydirs="false" todir="bin">
      <fileset dir="src">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
  </target>
  <target depends="init" name="build-project">
    <echo message="Java version: ${ant.java.version}"/>
    <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}">
      <src path="src"/>
      <classpath refid="myProject.classpath"/>
    </javac>
  </target>
</project>

欢迎提供帮助:)

共有1个答案

阎辰钊
2023-03-14

您的ant版本是根据旧版本的java(2003)编译的。Java 1.6于2006年推出。正如我发现的那样,您可以让ant在下面这样的旧版本上运行:http://www.coderanch.com/t/108814/tools/jdk-version-build-xml:

...............

如果Ant是根据1.5编译的,那么可以将构建任务修改

<代码>

从http://ant.apache.org/faq.html#java-version

Redhat ES 3.0随ant 1.5.2一起安装。即使将PATH和ANT_HOME变量正确设置为更高版本的ANT,也总是会被迫使用预安装的版本。

要在此操作系统上使用更高版本的ant,可以执行以下操作:

$ ant -version
Apache Ant version 1.5.2-23 compiled on November 12 2003
$ su -
# rpm -e ant ant-libs
# exit
$ hash -r
$ ant -version
Apache Ant version 1.6.2 compiled on July 16 2004
 类似资料:
  • 尝试编译和链接JNI progam 然后我继续转到R,并将rJava包作为源代码安装,如下所示:,然后转到 然后,当我使用以下命令检查版本时:

  • 我在Win 7下运行的是Ant 1.8.1。而我的Java版本是1.7_17。 我在我的构建文件中添加了以下2行用于诊断。 而结果就是 知道发生了什么吗? 蚂蚁1.8.1中的硬编码是它能显示的最高java版本是1.6吗?

  • 在我将ansible playbooks的php版本从5更新到7.2之后,我将xdebug与该版本相匹配。我在我得到的“流浪者”框中运行php-v PHP7.2。11-3乌本图14。04.1黛布。苏里。org 1(cli)(创建日期:2018年10月25日08:20:21)(NTS)版权所有(c)1997-2018 PHP Group Zend Engine v3。2.0,版权所有(c)1998-

  • ant design +Table组件 + Switch组件组合使用 在 输出的checked都为true了,但是Switch没有选中, 甚至我对table的data数据进行了useMemo了还是不行, ant design +Table组件 + Switch正常的渲染

  • 将ant从1.6升级到1.8.3版本后,Windows的信息资源。用Ant构建的dll已损坏。 以前,此值已正确保存到version-info资源中: < code > product . Copyright = \ u00a 9 Copyright 20xx-20xx yyyyyyyyy \ u 2122 (so(c)和TM符号显示正确)。 升级后Ant默认编码更改为UTF-8,这是意料之中的,

  • 我正试图用cordova构建一个android项目,但我在使用JDK时遇到了麻烦。 我已经确定路径是正确的,并指向我的JDK: 当我在命令提示符中运行echo%JAVA_HOME%时,它会显示 C:\Program Files\Java\jdk1.7.0_55\bin 但是当我运行cordova构建命令时,它显示JAVA_HOME当前设置 我还在名为java_home的路径下设置了一个系统变量,并