当您使用注释处理器运行 javac 且类路径中存在损坏的 jar 时,java 会出错,但返回 0 作为错误代码(0 表示运行时没有任何错误)。如果您在没有注释处理器的情况下运行相同的命令,则会返回 1 作为错误代码。因此添加一个annotationProcessor 会消除错误代码。
下面是一些示例输出:
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 错误跟踪器上: