java - Glacier Class Immutable Checker 不适用于 Checker Framework 3.6.0
问题描述
我尝试使用 Glacier Class Immutable Checker 在 Checker Framework 3.6.0 上不起作用。
我用 Maven 获得了 Glacier 0.1。( http://mcoblenz.github.io/Glacier/ )
然后,我尝试检查示例源,但出现错误。我可以将 Glacier Class Immutable Checker 与 Checker Framework 3.6.0 一起使用吗?
[jsr308.javac] javac 11.0.7 [jsr308.javac] 错误:在 args [edu.cmu.cs.glacier.GlacierChecker@625732] 上调用类 edu.cmu.cs.glacier.GlacierAnnotatedTypeFactory 的构造函数时出现 InvocationTargetException;根本原因:java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)' [jsr308.javac ] ; Checker 框架崩溃了。请报告崩溃。[jsr308.javac] 异常:java.lang.reflect.InvocationTargetException;java.lang.reflect.InvocationTargetException [jsr308.javac] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [jsr308.javac] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance( NativeConstructorAccessorImpl.java:62) [jsr308.
[jsr308.javac] 基础异常:java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class) '; java.lang.NoSuchMethodError: 'javax.lang.model.element.AnnotationMirror org.checkerframework.javacutil.AnnotationUtils.fromClass(javax.lang.model.util.Elements, java.lang.Class)' [jsr308.javac] 在 edu .cmu.cs.glacier.GlacierAnnotatedTypeFactory.(GlacierAnnotatedTypeFactory.java:46) [jsr308.javac] 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [jsr308.javac] 在 java.base/jdk .internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [jsr308.javac] 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl。
解决方案
可从http://mcoblenz.github.io/Glacier/下载的复制包包含它自己的 Checker Framework 副本(文件checker.jar
和framework.jar
),您应该使用它。
冰川不再维护。它的问题跟踪器包含您提出的相同问题——使用更新版本的 Checker Framework 运行 Glacier——但维护者说“我现在没有时间处理这个问题”。
如果您想自己更新 Glacier,您可以查看更新 Glacier 以使用 Checker Framework 2.3.2的拉取请求。您需要从源代码构建 Glacier 才能使用该版本的 Checker Framework。Checker Framework 的那个版本在 Maven Central中可用。
推荐阅读
- javascript - 使用 Pug 打印数据库 Mongoose 中的所有项目
- spring - CompositeItemWriter 和 Wrapper
- java - Jersey Web 服务返回 HTTP 500
- postgresql - 在 JAVA 应用程序中使用 prepare 语句进行连接池
- firebase - Firebase 云功能未执行
- html - 如何在html5中对标签进行分组?
- react-native - 无法让 Jest expo 应用程序与 react-navigation 一起使用
- lotus-notes - 远程服务器上的 Notes 代理全文索引邮件数据库不工作
- excel - 为什么我的 ExportAsFixedFormat 不起作用?
- java - NumberFormatException 春天