Jar 使用Gradle任务时出现编译错误

Jar 使用Gradle任务时出现编译错误,jar,gradle,Jar,Gradle,我目前正试图将基于Ant的构建过程移动到Gradle 对于我的一些Java项目,我需要生成一个jar文件。这个jar文件 将被其他Java项目使用。 当我使用Ant创建Jar文件时(通过Ant Jar任务),一切正常 但当我尝试使用Gradle时,对于某些项目,我会遇到一些编译错误,如: 任务“:compileJava”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。“ --stacktrace选项不提供额外的信息 编译显示我的代码中有一些错误。 但是这段代码(Ant-jar任务使用

我目前正试图将基于Ant的构建过程移动到Gradle

对于我的一些Java项目,我需要生成一个jar文件。这个jar文件 将被其他Java项目使用。 当我使用Ant创建Jar文件时(通过Ant Jar任务),一切正常

但当我尝试使用Gradle时,对于某些项目,我会遇到一些编译错误,如:

任务“:compileJava”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。“

--stacktrace选项不提供额外的信息 编译显示我的代码中有一些错误。 但是这段代码(Ant-jar任务使用的jar)目前被20个或更多的其他项目使用,并且一切正常

Gradle似乎是一个很好的构建工具,因此我想了解为什么在使用Gradle Jar任务时(更准确地说,在使用compileJava任务时)会发生这种情况(编译错误)。


提前感谢您的帮助或解释。

经过数小时的调查,我找到了问题的答案。它与我们使用Ant生成Jar的旧方法有关


Ant-jar任务只将Eclipse生成的bin目录中的所有.class放入存档。问题是,
Eclipse似乎忽略了类中可能存在的所有错误
。这就是Ant-jar任务工作的原因。因此,事实上,@HieryNomus您在评论中说Ant-jar还存在其他错误时是对的编译代码的任务。

你的gradle构建文件是什么样子的,你调用了什么,实际结果是什么(例如,你得到了哪些编译错误)。您似乎没有声明所有依赖项。我很确定我的build.gradle中的所有依赖项都可以,因为我使用的与Ant构建相同。但是gradle compileJava告诉我代码有问题。例如,
error:type参数MyPanel不在类型变量T的范围内;private void setDefault值(MyList ps){其中T是一个类型变量:T扩展了MyList类中声明的APanel
,但是使用Ant-jar任务,一切都可以。或者,这个Ant任务忽略编译错误,创建jar时没有任何警告。如果Ant build.xml只创建了一个jar,这意味着有其他东西正在编译它,或者是Ant在这方面也会失败。
gradle compileJava
不创建jar,但编译类。
gradle jar
创建jar。行为上的差异可能来自使用不同的JDK版本进行编译。有时较低的JDK版本不会抱怨与泛型相关的代码,尽管它们应该这样做。默认情况下,gradle将编译使用
gradle-v
(在
JRE
下)中显示的JDK版本。还要检查编译器源代码和目标版本设置是否相同。在gradle中,它们由
sourceCompatibility
targetCompatibility
属性控制(例如
sourceCompatibility=1.5
).@Peter我尝试过你的解决方案,但仍然有相同的编译错误。此外,我尝试对Ant和Gradle使用相同的编译器版本(通过Eclipse)。但结果是一样的:对于Ant,它可以正常工作,但是对于Gradle,我有编译错误(即使我在build.Gradle中更改了源代码和目标的兼容性)此外,我还尝试了另一件事:手动创建jar库(Eclipse workspace->Export..->jar文件中的项目)。与Ant一样,没有编译错误(只有警告,但没有关于以前泛型问题的警告)。