簡體   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