当你在类路径中使用注释处理器和损坏的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