我正在尝试编译从其他开发人员检出的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>
Run Code Online (Sandbox Code Playgroud)
当我编译(使用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
Run Code Online (Sandbox Code Playgroud)
这个错误是什么意思?
Vin*_*lds 13
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).