我已经安装了Eclipse 3.5.2和JDK for Java 6。
这是我在Eclipse中安装的JRE
alt text http://img806.imageshack.us/img806/3345/eclipsejres.jpg
我正在尝试使用ant构建文件进行编译,其中一部分内容如下所示并指定java 1.5:
<target name="compile" depends="build-common, init" description="Compile files. ">
<javac srcdir="${src_dir}" destdir="${build_dir}" debug="true" target="1.5" source="1.5">
<classpath path="${tomcat_home}/lib/servlet-api.jar;${tomcat_home}/lib/log4j-1.2.15.jar;/usr/local/lib/portlet-api-1.0.jar;." />
</javac>
</target>
但是当我尝试编译时,控制台窗口显示以下错误:
compile:
[javac] Compiling 1 source file to H:\jephperro\portlets\build
[javac] javac: invalid target release: 1.5
[javac] Usage: javac <options> <source files>
[javac] where possible options include:
[javac] -g Generate all debugging info
[javac] -g:none Generate no debugging info
[javac] -g:{lines,vars,source} Generate only some debugging info
[javac] -nowarn Generate no warnings
[javac] -verbose ....
BUILD FAILED
H:\jephperro\portlets\CourseList-build.xml:25: Compile failed; see the compiler error output for details.
Total time: 531 milliseconds
Eclipse的问题是什么?
答案 0 :(得分:1)
有关详细信息,请参阅编译器错误输出。
您可能依赖于使用Java版本而不是1.5 JDK编译的库。
实际上,你的1.5 JDK在哪里?我只看到一个JRE。我的猜测是你需要download a version 1.5 JDK并在Eclipse中添加它。
答案 1 :(得分:0)
您可以在ant构建文件中创建一个运行相当于java -version
的任务,这样您就可以了解Eclipse启动的蚂蚁正在使用哪个Java编译器。
提示:您的默认JRE是1.6 JRE。这对运行代码很好,但不适合编译。只有JDK包含外部编译所需的魔法(例如由ant完成)。 Eclipse通过在自己的代码中包含增量Java编译器来解决这个问题(更神奇)。
多年以后,我仍然不完全理解Eclipse,ant和JDK如何互操作,所以也许你需要做一些实验。
答案 2 :(得分:0)
运行Ant文件时,AFAIR Eclipse不使用自己的内部Java编译器。检查您的本地路径并尝试找出Ant调用的javac。
答案 3 :(得分:0)
'javac:无效目标版本:1.5'编译错误通常由源/二进制级别不兼容引起。这意味着您正在尝试使用JDK 1.4或更低版本编译JDK 5的源代码级别。
Eclipse使用内置的Java编译器。编译器实际遵循的级别取决于项目设置。您可以为每个项目配置Java级别,也可以将其设置为全局级别的默认值。
从菜单栏中选择Window-&gt; Preferences。选择Java-&gt;编译器首选项。将编译器合规性级别设置为5.0。
答案 4 :(得分:0)
正如Saifuddin和其他人提到的那样,这个错误很可能是因为你没有为你想要的版本使用正确的Java编译器。我注意到你安装的JRE中有一个位于DevsuiteHome_1的JDK,没有说出什么版本。也许Ant正在使用它?
很容易检查。你在Eclipse中运行ant。 Ant拥有自己的配置设置,可以与您的工作区不同。要检查Ant在运行时使用的版本,请按照以下步骤操作:
运行 - &gt;外部工具 - &gt;外部工具配置 - &gt;点击你的ant构建文件(如果你已经运行过一次就应该创建它,如果不是你总是可以在这里创建它) - &gt;选择JRE选项卡 - &gt;验证您正在使用的运行时间