cqfn / jpeek

Hosted and command-line calculator of cohesion metrics for Java code
https://i.jpeek.org
MIT License
205 stars 81 forks source link

UnsupportedOperationException: Records requires ASM8 #535

Closed yegor256 closed 7 months ago

yegor256 commented 1 year ago
Caused by: java.lang.UnsupportedOperationException: Records requires ASM8
    at org.objectweb.asm.ClassVisitor.visit(ClassVisitor.java:111)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:569)
    at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
    at org.jpeek.skeleton.XmlClass.iterator(XmlClass.java:89)
    at org.xembly.Directives.toCollection(Directives.java:562)
    at org.xembly.Directives.append(Directives.java:228)
    at org.jpeek.skeleton.Skeleton.xembly(Skeleton.java:192)
    at org.jpeek.skeleton.Skeleton.lambda$packages$2(Skeleton.java:149)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
MaltePetersen commented 7 months ago

I am facing the same issues in a java 17 application.

java -jar jpeek-0.32.2-jar-with-dependencies.jar --sources . --target ./jpeek                                     10004
Exception in thread "main" java.io.UncheckedIOException: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException: Records requires ASM8
        at org.cactoos.scalar.Unchecked.value(Unchecked.java:58)
        at org.jpeek.skeleton.Skeleton.packages(Skeleton.java:153)
        at org.jpeek.skeleton.Skeleton.xml(Skeleton.java:113)
        at org.jpeek.App.analyze(App.java:148)
        at org.jpeek.Main.run(Main.java:152)
        at org.jpeek.Main.main(Main.java:125)
Caused by: java.io.IOException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException: Records requires ASM8
        at org.cactoos.func.UncheckedFunc.lambda$apply$0(UncheckedFunc.java:56)
        at org.cactoos.scalar.Checked.value(Checked.java:76)
        at org.cactoos.scalar.IoChecked.value(IoChecked.java:63)
        at org.cactoos.scalar.Unchecked.value(Unchecked.java:56)
        at org.cactoos.func.UncheckedFunc.apply(UncheckedFunc.java:57)
        at org.cactoos.scalar.Checked.wrappedException(Checked.java:100)
        at org.cactoos.scalar.Checked.value(Checked.java:85)
        at org.cactoos.scalar.IoChecked.value(IoChecked.java:63)
        at org.cactoos.scalar.Unchecked.value(Unchecked.java:56)
        ... 5 more
Caused by: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException: Records requires ASM8
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at org.cactoos.scalar.And.lambda$null$0(And.java:97)
        at org.cactoos.scalar.ScalarEnvelope.value(ScalarEnvelope.java:53)
        at org.cactoos.scalar.And.value(And.java:152)
        at org.cactoos.scalar.AndInThreads.value(AndInThreads.java:229)
        at org.cactoos.scalar.AndInThreads.value(AndInThreads.java:57)
        at org.cactoos.scalar.Checked.value(Checked.java:76)
        ... 7 more
Caused by: java.lang.UnsupportedOperationException: Records requires ASM8
        at org.objectweb.asm.ClassVisitor.visit(ClassVisitor.java:111)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:569)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
        at org.jpeek.skeleton.XmlClass.iterator(XmlClass.java:89)
        at org.xembly.Directives.toCollection(Directives.java:562)
        at org.xembly.Directives.append(Directives.java:228)
        at org.jpeek.skeleton.Skeleton.xembly(Skeleton.java:192)
        at org.jpeek.skeleton.Skeleton.lambda$packages$2(Skeleton.java:149)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
yegor256 commented 7 months ago

@pnatashap maybe you can help in this project too?

pnatashap commented 7 months ago

@MaltePetersen have you faced with this error on some public repo?

pnatashap commented 7 months ago

I am about to be sure that the reason is https://github.com/cqfn/jpeek/blob/master/src/main/java/org/jpeek/skeleton/XmlClass.java#L74 it should be Opcodes.ASM8 at least and this error can produce record class (if check the condition from asm library).

johnnywiller commented 7 months ago

Following what @pnatashap pointed, I've changed to ASM9 and it worked nicely both in jpeek test suite as in the project I was running it.

pnatashap commented 7 months ago

Will check it deeper and add some tests about it to make sure that we know all

MaltePetersen commented 7 months ago

Thanks for fixing the issue! Are the jars-with-dependencies automatically updated? I can not yet find a new version the latest are both from 2023 0.32.1/ 2023-11-14 08:53 -
0.32.2/ 2023-11-14 13:35 -

yegor256 commented 7 months ago

@MaltePetersen we haven't released it yet