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

蚂蚁构建失败,“[javac]javac:无效的目标发布:7”

叶声
2023-03-14

更新:请参阅此处的分辨率。

谢谢大家的帮助!

我在尝试用Ant编译项目时遇到了一个错误,它声称“[javac]javac:invalid target release:7”,并导致构建失败。

我正在Mac OSX Mavericks机器上运行javac版本1.7.040。Ant版本:Apache Ant(TM)1.8.3版,2012年2月26日编译

只有在尝试使用Ant编译时,才会出现问题。在命令行使用javac编译项目中的单个文件可以正常工作(使用以下命令):

javac -d /Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils -classpath /Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils:/Users/username/git/appinventor-sources/appinventor/lib/guava/guava-14.0.1.jar -target 7 -encoding utf-8 -g:lines,vars,source -source 7 common/src/com/google/appinventor/common/utils/*

build-common.xml文件为javac指定:

<attribute name="source" default="7"/>
<attribute name="target" default="7"/>

相同的构建文件对其他人来说工作得很好,可以在以下位置找到:https://github.com/cdlockard/appinventor-sources/blob/master/appinventor/build-common.xml

读了这篇文章后,我在我的机器上检查了早期的Java版本,但没有找到任何版本。

针对这个问题,我补充道

executable="/usr/bin/javac"

到构建公共。xml文件,以确保它找到了正确的Java编译器,但错误仍在继续。

命令行输出如下:

init:

CommonUtils:
[javac] Compiling 1 source file to /Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils
[javac] javac: invalid target release: 7
[javac] Usage: javac <options> <source files>
[javac] use -help for a list of possible options

BUILD FAILED
/Users/username/git/appinventor-sources/appinventor/build.xml:16: The following error occurred while executing this line:
/Users/username/git/appinventor-sources/appinventor/build-common.xml:318: The following error occurred while executing this line:
/Users/username/git/appinventor-sources/appinventor/common/build.xml:42: The following error occurred while executing this line:
/Users/username/git/appinventor-sources/appinventor/build-common.xml:120: Compile failed; see the compiler error output for details.

在verbose中运行ant得到了以下详细信息:

[javac] Compiling 1 source file to /Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils
[javac] Using modern compiler
[javac] Compilation arguments:
[javac] '-d'
[javac] '/Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils'
[javac] '-classpath'
[javac] '/Users/username/git/appinventor-sources/appinventor/common/build/classes/CommonUtils:/Users/username/git/appinventor-sources/appinventor/lib/guava/guava-14.0.1.jar'
[javac] '-target'
[javac] '7'
[javac] '-encoding'
[javac] 'utf-8'
[javac] '-g:lines,vars,source'
[javac] '-verbose'
[javac] '-source'
[javac] '7'
[javac] 
[javac] The ' characters around the executable and arguments are
[javac] not part of the command.
[javac] File to be compiled:
[javac]     /Users/username/git/appinventor-sources/appinventor/common/src/com/google/appinventor/common/utils/package-info.java
[javac] javac: invalid target release: 7
[javac] Usage: javac <options> <source files>
[javac] use -help for a list of possible options
  [ant] Exiting /Users/username/git/appinventor-sources/appinventor/common/build.xml.

有什么想法吗?非常感谢您的帮助。

共有2个答案

周瀚
2023-03-14

我的解决办法是改变所有project.properties文件

javac.source=1.8
javac.target=1.8

javac.source=1.7
javac.target=1.7
龙凯
2023-03-14

问题是Ant正在我的计算机上查看Java1.6安装(我没有意识到存在),由于我的$JAVA_HOME变量未设置,它无法找到1.7安装。我通过在我的.bash_profile文件中添加以下行来添加一个$JAVA_HOME变量:

export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home'

这纠正了问题,项目建设成功。

我意识到它实际上在我的Ant输出的最顶端通知了我Java版本,但我以前没有注意到:

Detected Java version: 1.6 in: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

一些可能对有类似问题的用户有帮助的附加说明:

-根据这一点,Ant将只利用构建公共代码的javac部分的“可执行”字段中的值。xml文件,如果“fork”字段设置为yes。如果未列出,fork默认为“no”,因此如果不添加它并将其设置为“yes”,则“executable”值将被忽略。

-在Mac上,可以通过/usr/bin/javac访问正确的javac可执行文件。在命令行上,您可以运行

which javac

找到在命令行下执行的文件的路径,当然

javac -version

如上所述,Ant不会查看命令行PATH中的javac,而是查看JAVA_HOME。

谢谢大家的帮助!

 类似资料:
  • 问题内容: 蚂蚁建造中的问题 蚂蚁源和目标1.6到jdk 1.6的可变路径 问题答案: 您使用的编译器无法进行编译(javac:无效的目标版本:1.6)。您确定使用JDK 1.6吗?也许ant已安装并使用了JDK 1.5。通过在目标中添加以下行来检查使用的Java版本: 它输出Ant使用的Java版本。 您可以将编译器设置为使用其他Java版本。您必须使用fork属性来使用外部javac并指定要使

  • 问题内容: 我正在尝试使用ant在命令行上生成apk。我可以使用ant clean,但是对于ant调试和ant release命令,我得到以下错误。 建立失败 C:\ Android \ sdk \ tools \ ant \ build.xml:649:执行此行时发生以下错误:C:\ Android \ sdk \ tools \ ant \ build.xml:694:执行失败:java.io

  • 我最近下载了与NetBeans捆绑在一起的JDK1.8.0.006。然后我发现我一直在用Java1.7开发的JavaFx项目不会用Java1.8编译,所以我把JDK降到了1.7。但我还是无法让它运行/编译。我得到了这个错误: 我真的被困住了,非常感谢您的帮助。

  • 问题内容: 我正在尝试在中指定JDK的另一个版本maven-compiler-plugin。当-target和-source参数设置为1.5时,一切正常。但是,当我尝试使用1.6 JDK时,maven报告了一个错误。有人遇到过这个问题吗? 错误: 执行Javac失败,但无法解析错误:javac:无效标志:-s用法:javac,可能的选项包括:-g生成所有调试信息-g:none不生成调试信息 谢谢。

  • 我试图在< code > maven-compiler-plugin 中指定另一个版本的JDK。当< code>-target和< code>-source参数设置为1.5时,一切正常。但是当我尝试使用1.6版JDK时,maven报告了一个错误。有人面临过这个问题吗? 错误: 执行 javac 失败,但无法解析错误: javac: 无效标志: -s 用法: javac(如果可能)选项包括: -g

  • 问题内容: 尝试执行mvn全新安装时出现编译错误。 Java版本是 Maven版本 Pom.xml 任何帮助,将不胜感激。 问题答案: 问题是您的maven使用的是Java 5(正如您的评论所述)。您必须将JAVA_HOME变量更改为指向jdk 6或更高版本。看着 : 使用javac时出错:“javac:无效标志:-s”