简体   繁体   English

使用Gradle插件的Findbugs在Java 9中不起作用

[英]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 8open-jdk )一切正常,但是当我使用java 9oracle - 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM