javac 使用注释处理器返回不正确的错误代码



当你在类路径中使用注释处理器和损坏的jar运行javac时,java错误输出,但返回0作为错误代码(0表示它运行没有任何错误)。如果在没有注释处理器的情况下运行相同的命令,则返回 1 作为错误代码。因此,添加注释处理器会消除错误代码。

下面是一些示例输出:

 running compile with a corrupted jar
 error: error reading corruptedJar.jar; error in opening zip file
 Using Test AnnotationProcessor
 Error level 0
 running compile without the corrupted jar
 Using Test AnnotationProcessor
 Error level 0
 running compile without the annotationProcessor but with the corrupted jar
 error: error reading corruptedJar.jar; error in opening zip file
 1 error
 Error level 1

我用来运行上述输出的 bat 文件是

 @echo off
 echo running compile with a corrupted jar
 javac -cp annotationProcessor.jar;corruptedJar.jar HelloWorld.java
 echo Error level %errorlevel%
 echo running compile without the corrupted jar
 javac -cp annotationProcessor.jar HelloWorld.java
 echo Error level %errorlevel%
 echo running compile without the annotationProcessor but with the corrupted jar
 javac -cp corruptedJar.jar HelloWorld.java
 echo Error level %errorlevel%

我是否缺少参数,或者这是javac中返回错误级别的错误

编辑。。

所有 https://gist.github.com/ludjer/570708438dbcb3f08106 的源代码

annotationProcessor.jar 中有一个名为 AnnotationProcessor 的类

损坏的Jar.jar是一个损坏的zip文件(技术上可能是测试地雷的任何非zip文件,是一个具有重命名扩展名的文本文件)

我已经用oracle打开了一个错误,它在JDK错误跟踪器上:

https://bugs.openjdk.java.net/browse/JDK-8151255

最新更新