2017-11-04 4 views
4

Ich migriere mein Projekt (Multiprojekt in Gradle) von Java 8 nach Java 9 (ohne Module bisher zu verwenden). Ich benutze Gradle 4.3 und Findbugs Gradle Plugin - ich habe apply plugin: 'findbugs' in meiner gradle.build Datei. In Abhängigkeiten habe ichFindbugs mit Gradle-Plugin funktioniert nicht in Java 9

compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' 
compile group: 'com.google.code.findbugs', name: 'annotations', version: '3.0.1' 

Zuvor mit java 8 (open-jdk) alles normal funktioniert, aber wenn ich java 9 (oracle - build 9.0.1+11) verwendet, bekam ich die folgende Ausnahme nach der Ausführung gradle check (com.example.custom.MyClass eine Klasse von meinem Code-Basis ist): folgende Fehler bei der Analyse aufgetreten:

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) 

Dies scheint für jede Klasse von meinem gradle Projekt (und auch für jede Klasse, die Hibernate JPA 2 Metamodel Generator erzeugt). Ich denke, das wird mit Stichsägen-Modulen zusammenhängen. Allerdings deklariere ich keine module-info.java, also ich denke, ein automatisches Modul ist für die gesamte Codebasis erstellt und alles ist von überall zugänglich.

+0

„Ich denke, das wird zu Puzzle zusammenhängen Module "- nein, das hat nichts mit Modulen zu tun. Von der Stack-Ablaufverfolgung scheint es, dass Findbugs ASM verwendet und ASM IllegalArgumentException wirft, wahrscheinlich weil es eine alte Version von ASM ist, die v53.0-Klassendateien nicht versteht. Ein Hinweis auf das Findbugs-Projekt auf GitHub bittet stattdessen, Fehler an Spotbugs zu melden. –

Antwort

5

Obwohl findbugs Java9 support sieht nicht aus, auch nach und nach voranzukommen. Und es gibt mehr darüber, die schließlich schlägt vor, stattdessen spotbugs zu verwenden.

compile 'com.github.spotbugs:spotbugs:3.1.0' 

Sie sollen diese migration guide nützlich für das gleiche finden.


Das könnte dir allerdings will nur einen Versuch geben die ASM-Version 6.0 in Ihrem Projekt Build außer Kraft zu setzen mit:

compile 'org.ow2.asm:asm:6.0' 

+2

Findbugs hat eine Abhängigkeit von 'asm-commons' und' asm-debug-all'. Ich habe 'compile 'org.ow2.asm: asm-commons: 6.0'' und' compile' org.ow2.asm: asm-debug-all: 6.0_BETA'' hinzugefügt und nachdem ich die Abhängigkeiten überprüft habe, sehe ich immer noch '\ --- com.google.code.findbugs: findbugs: 3.0.1 + --- org.ow2.asm: asm-debug-all: 5.0.2 + --- org.ow2.asm: asm-commons : 5.0.2 | \ --- org.ow2.asm: asm-tree: 5.0.2 | \ --- org.ow2.asm: asm: 5.0.2' Es funktioniert immer noch nicht. Eine bessere Lösung wird es sein, zu "Spotbugs" zu migrieren, wie Sie es vorgeschlagen haben. Vielen Dank! – fxmasa

+2

@fxmasa ya, das sollte der Weg sein, wie ich in erster Linie vermuten würde. Oder als einer der Kommentare zu diesen GitHub-Problemen gelesen wird, ist es, den Java-9-bezogenen Zweig zu ziehen und die Sachen selbst zu aktualisieren, um davon Gebrauch zu machen. – nullpointer

Verwandte Themen