[英]Findbugs with Gradle plugin doesn't work in Java 9
I am migrating my project (multi project in Gradle
) from Java 8 to Java 9 (without using modules so far). 我正在将我的项目(
Gradle
多项目)从Java 8迁移到Java 9(到目前为止不使用模块)。 I use Gradle 4.3 and Findbugs Gradle plugin - I have apply plugin: 'findbugs'
in my gradle.build
file. 我使用Gradle 4.3和Findbugs Gradle插件 - 我在
gradle.build
文件中apply plugin: 'findbugs'
。 In dependencies I have 在依赖中我有
compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2'
compile group: 'com.google.code.findbugs', name: 'annotations', version: '3.0.1'
Previously, with java 8
( open-jdk
) everything worked normally, but when I used java 9
( oracle - build 9.0.1+11
), I got the following exception after executing gradle check
( com.example.custom.MyClass
is a class from my codebase): The following errors occurred during analysis: 以前,使用
java 8
( open-jdk
)一切正常,但是当我使用java 9
( oracle - build 9.0.1+11
)时,执行gradle check
后得到以下异常( com.example.custom.MyClass
是一个我的代码库中的类):分析期间发生以下错误:
Error scanning com/example/custom/MyClass for referenced classes
java.lang.IllegalArgumentException
At org.objectweb.asm.ClassReader.<init>(ClassReader.java:170)
At org.objectweb.asm.ClassReader.<init>(ClassReader.java:153)
At edu.umd.cs.findbugs.asm.FBClassReader.<init>(FBClassReader.java:35)
At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:48)
At edu.umd.cs.findbugs.classfile.engine.asm.ClassReaderAnalysisEngine.analyze(ClassReaderAnalysisEngine.java:34)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:75)
At edu.umd.cs.findbugs.classfile.engine.ClassInfoAnalysisEngine.analyze(ClassInfoAnalysisEngine.java:38)
At edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getClassAnalysis(AnalysisCache.java:262)
At edu.umd.cs.findbugs.FindBugs2.buildReferencedClassSet(FindBugs2.java:774)
At edu.umd.cs.findbugs.FindBugs2.execute(FindBugs2.java:222)
At org.gradle.api.plugins.quality.internal.findbugs.FindBugsExecuter.runFindbugs(FindBugsExecuter.java:39)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
At java.base/java.lang.reflect.Method.invoke(Method.java:564)
At org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:100)
At org.gradle.process.internal.worker.request.WorkerAction.runThenStop(WorkerAction.java:83)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
At java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
At java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
At java.base/java.lang.reflect.Method.invoke(Method.java:564)
At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
At org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:146)
At org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:128)
At org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
At org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
At org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
At java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
At java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
At org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
At java.base/java.lang.Thread.run(Thread.java:844)
This appears for every class from my gradle project (and also for every class which Hibernate JPA 2 Metamodel generator generated). 这适用于我的gradle项目中的每个类(以及Hibernate JPA 2 Metamodel生成器生成的每个类)。 I guess this will be related to jigsaw modules.
我想这将与拼图模块有关。 However I don't declare any
module-info.java
, so I guess an automatic module is created for the whole codebase and everything is accessible from anywhere. 但是我没有声明任何
module-info.java
,所以我想为整个代码库创建了一个自动模块,所有内容都可以从任何地方访问。
Though findbugs Java9 support doesn't look moving ahead even gradually. 虽然findbugs Java9支持甚至没有逐步推进。 And there are more posts about it which eventually suggests using spotbugs instead.
还有更多关于它的帖子 ,最终建议使用spotbug代替。
compile 'com.github.spotbugs:spotbugs:3.1.0'
You shall find this migration guide useful for the same. 您会发现此迁移指南对此有用。
You might though just want to give a try to override the ASM version to 6.0 in your project's build using:
您可能只想尝试使用以下方法在项目构建中将ASM版本覆盖为6.0:
compile 'org.ow2.asm:asm:6.0'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.