繁体   English   中英

Eclipse不会编译,坏的类文件,错误的版本

[英]Eclipse won't compile, bad class file, wrong version

我正在尝试编译从其他开发人员检出的SVN代码。 Eclipse最近给我带来了很多麻烦。

以下是我的项目特定设置: 替代文字

这是我的ant文件的编译部分:

<target name="compile" depends="build-common, init" description="Compile files. ">
    <javac srcdir="${src_dir}" destdir="${build_dir}" debug="true" >
        <classpath path="${tomcat_home}/lib/servlet-api.jar;" />
    </javac>
</target>

当我编译(使用Ant)时,我收到一条错误消息:

compile:
    [javac] Compiling 3 source files to H:\MYCOMPANY\portlets\build
    [javac] H:\MYCOMPANY\portlets\src\com\mycompany\portlets\CourseList.java:3: cannot access java.io.IOException
    [javac] bad class file: C:\Program Files\Java\jre1.6.0_07\lib\rt.jar(java/io/IOException.class)
    [javac] class file has wrong version 49.0, should be 48.0
    [javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
    [javac] import java.io.IOException;
    [javac]                ^
    [javac] 1 error

这个错误是什么意思?

49.0的类文件版本属于Java 1.5.x,而48.0的类文件属于Java 1.4.x版本之一。 由于Java语言规范中引入了一些新功能和更改,因此类文件结构在1.5中已更改。

从错误中,可以推断出Java 1.4类文件是预期的,而找到了Java 1.5类文件。 看起来编译器是Java 1.4编译器,因此您应该尝试验证您是使用正确版本的Java编译器还是正确的JDK(即JDK home)。

附录

Ant倾向于在$ JAVA_HOME / bin / javac中查找javac可执行文件。 如果JAVA_HOME环境变量设置不正确,比如说是Java 1.4主页,那么即使在Eclipse中也有可能出现所描述的错误。

ADDENDUM#2

向PATH环境变量添加条目可能会导致更改Ant的搜索类路径行为,从而可能导致使用不同的tools.jar来编译源代码。 这可能是由于JRE 1.4.2安装中的jvm.dll用于运行Eclipse(以及Ant)。

坏类文件:C:\\ Program Files \\ Java \\ jre1.6.0_07 \\ lib \\ rt.jar(java / io / IOException.class)
类文件有错误的版本49.0,应该是48.0

它告诉所提到的类文件是使用生成49.0版本的类文件的编译器编译的,而ant期望使用生成版本48.0的类文件的编译器进行编译。 由于有问题的类是JRE的一部分,因此您需要更新build.xml的类路径以包含包含版本48.0的类文件的JRE。

首先,您的项目设置与构建脚本无关。 项目设置告诉您Eclipse如何构建项目,而不是如何运行ant文件。

要查找jvm ant运行的位置,请在Eclipse中右键单击构建脚本,然后选择“Run as ...”。 在弹出的对话框中,导航到jvm选项卡​​并检查用于运行脚本的jre。

错误消息表示您的Ant使用的tool.jar中包含的编译器工具是旧版本,而不是它尝试编译的类。 消息“[javac]类文件有错误的版本50.0应该是49.0”意味着你的类文件需要jdk 6.0但你的tool.jar来自jdk 5.0发行版。 要在eclipse中切换到正确的tools.jar,请打开Window> Preferences> Ant> Runtime> Global Entries。

您似乎使用1.5版Java编译器运行Ant,但是针对1.6安装的类库(rt.jar)进行编译。 您应该设置build.xml,以便它始终使用相同java版本的(编译器和类库)。

您可以尝试将tools.jarjdk/jre复制到tomcat的common/lib

它的工作对我来说这表现在这里

您还需要更改ANT的Java版本,因为如果您将运行时环境用作JDK1.8,那么您的ANT也应该指向相同的版本,或者Ant应该引用JDK1.8 / lib / tools中的tools.jar文件。罐子的位置。 为了解决这个问题,我的Eclipse转到Window - > Preference - > Ant - > Runtime - > Global Entries。 在这里检查并更新具有最新版本的tools.jar路径如下:C:\\ Program Files \\ Java \\ jdk1.8.0_60 \\ lib \\ tools.jar

然后运行您的构建脚本问题将得到解决。 :)

将eclipse中的tools.jar更改为正确的版本修复它。 我使用jre 1.6并且必须将其更改为使用1.8来获取版本52中的类文件。

也许您需要使用位于C:\\ Program Files \\ Java \\ jdk \\ jre的JDK JRE,而不是公共

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM