玩出新高度,嗨出jdk编译bug?

          项目mvn install 打包时编译报错

[INFO] Changes detected - recompiling the module!
[INFO] Compiling 95 source files to F:\Java_Programs_WorkSpace\workspace\TrainApp\api\target\classes
编译器 (1.8.0_241) 中出现异常错误。如果在 Bug Database (http://bugs.java.com) 中没有找到该错误, 请通过 Java Bug 报告页 (http://bugrepo
rt.java.com) 建立该 Java 编译器 Bug。请在报告中附上您的程序和以下诊断信息。谢谢。
java.lang.NullPointerException
        at com.sun.tools.javac.comp.Check$1AnnotationValidator.visitAnnotation(Check.java:2657)
        at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2317)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:49)
        at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:57)
        at com.sun.tools.javac.tree.TreeScanner.visitAnnotation(TreeScanner.java:320)
        at com.sun.tools.javac.comp.Check$1AnnotationValidator.visitAnnotation(Check.java:2658)
        at com.sun.tools.javac.tree.JCTree$JCAnnotation.accept(JCTree.java:2317)
        at com.sun.tools.javac.comp.Check.validateAnnotationTree(Check.java:2663)
        at com.sun.tools.javac.comp.Check.validateAnnotation(Check.java:2730)
        at com.sun.tools.javac.comp.Check.validateAnnotations(Check.java:2717)
        at com.sun.tools.javac.comp.MemberEnter$6.run(MemberEnter.java:891)
        at com.sun.tools.javac.comp.Annotate.flush(Annotate.java:155)
        at com.sun.tools.javac.comp.Annotate.enterDone(Annotate.java:129)

      从表面上看很容易被误导,错以为是jdk的底层编译问题。然后就按照报错信息去上面那个网址去查jdk的这个bug有没有修复。

然而查出来的结果点进去看并不符合。

玩出新高度,嗨出jdk编译bug?_第1张图片

静下心来想想,jdk8不至于这么low吧,毕竟是企业级稳定版本。而且这个项目也是线上运行很久了,想想今天改了什么代码。

代码走查中发现swagger注释中缺了点东西

 @ApiImplicitParams(
            @ApiImplicitParam(value = "拍搜图片id", name = "imageSearchId", required = true, paramType = "path", dataType = "int"),
            @ApiImplicitParam(value = "版本号", name = "version", required = false, paramType = "query", dataType = "int")
    )

正确的写法

@ApiImplicitParams({
            @ApiImplicitParam(value = "拍搜图片id", name = "imageSearchId", required = true, paramType = "path", dataType = "int"),
            @ApiImplicitParam(value = "版本号", name = "version", required = false, paramType = "query", dataType = "int")
    })

改了之后编译通过。

比较坑的是这个错误不像我们代码错误编译时会定位到那里,而且这个报错还是指向jdk编译bug。

在这个地方花了一些时间,甚至jdk重装,手误要不得。

纯粹水文,记录一下。

你可能感兴趣的:(雷锋的小本本)