我们经常使用ant来编译我们的Eclipse项目,但有时ant中javac任务往往只能编译一部分代码。当代码有编译错误时,ant就停止编译,不再继续编译剩下的代码。这种方式给一些单元测试或者脚本类的工程带来了麻烦,因为这类工程中的错误往往只是一个脚本的语法问题,并不影响其他脚本。所以这类工程希望尽可能多的编译全部代码,而不是因为一个编译错误而停止。
但我们在Eclipse里面编译工程时,却没有这样的问题,Eclipse将会把所有的代码都编译一遍,最后显示所有的错误。这是因为这时编译的是Eclipse自己实现的Java编译器。我们可以利用Eclipse自带的编译器,改进我们的ant脚本。
实现起来很简单:
1. 在ant脚本中加入一行:
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
如果javac任务中有这么一行,则删之:
compiler="javac1.5"
2. 下载ecj.jar,可以从http://download.eclipse.org/eclipse/downloads/下载,选择eclipse的版本号,然后在"JDT Core Batch Compiler"这个类别中就可以下载对应版本的ecj.jar了。
3. 运行ant命令,加上如下参数:
ant -f build.xml -lib ecj.jar
4. 如果遇到OutOfMemory的错误在编译过程中,则加上如下的环境变量:
set ANT_OPTS=-Xmx1024m
-----------------------------------
Using the ant javac adapter
The Eclipse compiler can be used inside an Ant buildfile using the javac adapter. In order to use the Eclipse compiler, you simply need to define thebuild.compiler property in your buildfile.
In order to get the batch compiler working in an ant buildfile, the ant runtime classpath needs to contain the Eclipse batch compiler. When you run your ant buildfile:
- outside of Eclipse: the easiest way to set up the ant runtime classpath is to add the
ecj.jar
file using the-lib
argument or dumping it inside theANT_HOME
location. - inside Eclipse using the same JRE than Eclipse: the Eclipse batch compiler is implicitely added to the ant runtime classpath.
- inside Eclipse using the different JRE: the Eclipse batch compiler must be explicitely added to the ant runtime classpath. This can be done using the
ecj.jar
file or using the org.eclipse.jdt.core jar file and thejdtCompilerAdapter.jar
file located inside the org.eclipse.jdt.core jar file (this jar file needs to be extracted first).
Here is a small example:
<?xml version="1.0" encoding="UTF-8"?>
<project name="compile" default="main" basedir="../.">
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<property name="root" value="${basedir}/src"/>
<property name="destdir" value="d:/temp/bin" />
<target name="main">
<javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4">
<classpath>
<pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/>
</classpath>
</javac>
</target>
</project>
The syntax used for the javac Ant task can be found in the Ant javac task documentation. The current adapter supports the Javac Ant task 1.4.1 up to 1.6.5 versions.
If you are using a version above 1.5.0, you can use the nested compiler argument element (<compilerarg>
) to specify compiler specific options.
... <javac srcdir="${root}" destdir="${destdir}" debug="on" nowarn="on" extdirs="d:/extdirs" source="1.4"> <classpath> <pathelement location="${basedir}/../org.eclipse.jdt.core/bin"/> </classpath> <compilerarg compiler="org.eclipse.jdt.core.JDTCompilerAdapter" line="-1.5 -warn:+boxing"/> </javac> ...Note:
- To prevent compiler dependant buildfiles, we strongly advise you to use a
<compilerarg>
whose "compiler" attribute value isorg.eclipse.jdt.core.JDTCompilerAdapter
. If this is not set, the buildfile can only be used with the Eclipse compiler. If set, the nested compiler argument is ignored if the name is different from the compiler name specified by thebuild.compiler
property. -
<compilerarg>
should not be used to set values like target value, source value, debug options, or any options that could be set using the defined attributes of thejavac
ant task. Its usage must be reserved to pass compiler specific options like warning options. When a command-line argument is specified more than once, the Eclipse batch compiler can report errors like:duplicate target compliance setting specification: 1.5
相关推荐
在使用Eclipse或MyEclipse开发Java应用时,有时可能会遇到Eclipse不自动编译Java文件的问题,导致项目无法正常运行。以下是一些常见的解决方法: 1. **更改编译错误处理策略**: 在Eclipse中,进入`Window -> ...
本文将详细介绍如何利用Eclipse离线插件compiler进行反编译jar包并进行debug调试。 首先,我们需要了解什么是反编译。反编译是将已编译的二进制代码(如.class或.jar文件)转换回源代码的过程。这对于没有源码的库...
以下是一些解决Eclipse不编译Java文件的方法: 1. **更改编译错误处理策略**: 在Eclipse中,进入`Window` -> `Preferences` -> `Java` -> `Compiler` -> `Building`,在这里你可以看到编译设置。默认情况下,...
以下将详细介绍如何使用Eclipse进行C,C++,JAVA程序的编译。 一、编译环境配置 1. **J2SE(TM) Development Kit (JDK)** JDK是Java开发工具包,它是编写、运行和调试Java应用程序的基础。JDK包含了Java编译器...
Java Development Kit(JDK)是Java编程语言和平台的基础,它包含了编译Java源代码所需的工具和库。对于Eclipse,虽然主要用于C编程,但由于Eclipse本身是用Java构建的,因此需要先安装JDK。 **JDK的下载:** 访问...
- **Java源代码编译**:`[javac]Compiling 337 source files to D:\eclipse-sourceBuild-srcIncluded-3.4.2\plugins\org.eclipse.osgi\temp.folder\@dot.bin`,这行信息指出正在将337个源文件编译至前述的临时目录。...
在本文中,我们将深入探讨如何在Eclipse集成开发环境中,结合MinGW编译器来构建Java JNI(Java Native Interface)项目。JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互,使得开发者可以利用C/...
这里提到的"ecj"是Eclipse Compiler for Java的缩写,它是Eclipse项目的一部分,提供了一个轻量级、快速的Java编译器。我们可以使用ecj来替代标准的javac进行编译。 要开始在Termux中编译Java,首先确保你已经安装...
Eclipse反编译插件是开发人员在进行代码分析、逆向工程或研究已有的Java类库时常用的一款工具。它允许用户查看Java字节码并将其转化为源代码,这对于理解无法获取源代码的第三方库或者研究二进制类文件非常有帮助。...
编译器-eclipse 适用于 ... 使用 xqbase-compiler-eclipse 作为通过 maven 编译的解决方法: < build> < plugins> < plugin> < artifactId>maven-compiler-plugin</ artifactId> < version>3.2</ version> < conf
本文将详细介绍如何使用Eclipse来编译C、C++以及JAVA程序。 首先,我们要确保拥有正确的编译环境。对于Java程序,我们需要J2SE(TM) Development Kit(JDK)。JDK是Java开发工具包,包含了编译器javac、解释器java...
为了在Eclipse中搭建C++的开发环境,通常需要使用MinGW(Minimalist GNU for Windows)这一Windows平台下的GCC(GNU Compiler Collection)编译器。本文将详细介绍如何在Windows操作系统下搭建Eclipse C++开发环境,...
总结:解决“Java compiler没有1.8”的问题,关键在于确保JDK 1.8正确安装并在系统路径中,以及Eclipse的JRE配置和项目编译级别设置为1.8。通过这些步骤,开发者能够确保他们的代码在Java 1.8环境中得以编译和运行,...
然而,有时Eclipse可能会出现不自动编译Java文件的问题,导致项目无法正常运行。本篇文章将深入探讨这个问题,并提供一个终极解决方法。 首先,我们需要理解Eclipse自动编译的工作原理。Eclipse在默认情况下会启用...
Java 6及以后的版本引入了`javax.tools.JavaCompiler`接口,它提供了一套API用于在运行时编译Java源码。首先,我们需要获取`ToolProvider`的实例,然后使用`getSystemJavaCompiler()`方法来获取`JavaCompiler`实例...
1. 设置 Eclipse 的编译环境,选择正确的 Java 编译器版本。 2. 解决中文乱码问题,选择正确的编码方式,例如 Utf-8。 3. Clean 项目,确保项目的顺利编译和运行。 通过这三个步骤,可以快速解决编译环境和中文乱码...
3. **添加JAD插件**:创建一个新的软链接或快捷方式,指向jad.exe,然后在Eclipse的"首选项"中,找到“Java” -> “编译器”(Compiler) -> “除错”(Debugging) -> “源查找”(Source Lookup)。点击右下角的“添加”...
2. `eclipse反编译插件Jadclipse介绍.mht`:这可能是一个包含详细教程或说明的文件,用于指导用户如何安装和使用Jadclipse,包括设置和配置步骤,以及可能的使用技巧和注意事项。 3. `read.txt`:这个文件通常用于...
总的来说,了解并掌握如何在Eclipse中安装和使用反编译插件是每个Java开发者必备的技能之一。它可以帮助我们理解和分析第三方库,排查问题,甚至学习新的编程技术。通过遵循正确的安装步骤和配置,开发者可以充分...