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

问题描述 投票:0回答:1

当您使用注释处理器运行 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文件,用于测试我的是一个带有重命名扩展名的文本文件)

java compiler-errors javac
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.