Repository navigation
CLI with JDK 17 throws Unsupported class file major version 61 #373
Copy link
Copy link
Closed
Labels
ctg-bugIssue is a bugIssue is a bugpriority-top-focusTop priority chosen by dev teamTop priority chosen by dev teamstatus-verifiedBug fix is verifiedBug fix is verified
Milestone
Description
Description
CLI with JDK 17
Soot throws "IllegalArgumentException: Unsupported class file major version 61" when called from CLI with JDK 17.
To Reproduce
Steps to reproduce the behavior:
- Define JDK-17 as primary (Path, JAVA_HOME)
- Download one of the latest CLI from master
- For simplicity in the folder where utbot-cli*.jar is located :
Create ExampleString.java using var (feature introduced in Java 9)
public class ExampleString {
public void stringNewMethod() {
var text = "Hello! This is String defined with var";
text = text.toLowerCase();
System.out.println(text);
text = text.toUpperCase();
System.out.println(text);
}
}
- Create ExampleRecord.java using record (feature introduced in Java 16)
public class ExampleRecord {
public record Person(String name, int age) {
public Person {
if(age < 0) {
throw new IllegalArgumentException("Age cannot be negative");
}
}
}
}
- Compile your files with JDK-17
javac ExampleRecord.java
javac ExampleString.class
- Run utbot-cli to generate tests for it, like that:
java -jar utbot-cli-2022.7.jar generate --source ExampleString.java --classpath "D:\Current\Java" -o ExampleStringTest.java ExampleString
java -jar utbot-cli-2022.7.jar generate --source ExampleRecord.java --classpath "D:\Current\Java" -o ExampleRecordTest.java ExampleRecord
Expected behavior
Tests are supposed to be generated.
Actual behavior
There is the following output in console:
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
16:14:54.331 | INFO | AllInMemoryClassProvider | Loaded: 2 path entries, 48 classes, 196740 bytes
16:14:54.378 | ERROR | GenerateTestsCommand | An error has occurred while generating test for snippet ExampleRecord : java.lang.IllegalArgumentException: Unsupported class file major version 61
java.lang.IllegalArgumentException: Unsupported class file major version 61
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:196)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:177)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:163)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:284)
at soot.asm.AsmClassSource.resolve(AsmClassSource.java:64)
at soot.SootResolver.bringToHierarchyUnchecked(SootResolver.java:253)
at soot.SootResolver.bringToHierarchy(SootResolver.java:221)
at soot.SootResolver.bringToSignatures(SootResolver.java:292)
at soot.SootResolver.bringToBodies(SootResolver.java:332)
at soot.SootResolver.processResolveWorklist(SootResolver.java:171)
at soot.SootResolver.resolveClass(SootResolver.java:141)
at soot.Scene.tryLoadClass(Scene.java:965)
at soot.Scene.loadBasicClasses(Scene.java:1670)
at soot.Scene.loadNecessaryClasses(Scene.java:1770)
at org.utbot.framework.plugin.api.SootUtilsKt.runSoot(SootUtils.kt:77)
at org.utbot.framework.plugin.api.UtBotTestCaseGenerator.init(UtBotTestCaseGenerator.kt:111)
at org.utbot.framework.plugin.api.UtBotTestCaseGenerator.init(UtBotTestCaseGenerator.kt:75)
at org.utbot.cli.GenerateTestsAbstractCommand.initializeEngine(GenerateTestsAbstractCommand.kt:202)
at org.utbot.cli.GenerateTestsCommand.run(GenerateTestsCommand.kt:95)
at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:204)
at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:213)
at com.github.ajalt.clikt.parsers.Parser.parse(Parser.kt:17)
at com.github.ajalt.clikt.core.CliktCommand.parse(CliktCommand.kt:396)
at com.github.ajalt.clikt.core.CliktCommand.parse$default(CliktCommand.kt:393)
at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:411)
at com.github.ajalt.clikt.core.CliktCommand.main(CliktCommand.kt:436)
at org.utbot.cli.ApplicationKt.main(Application.kt:31)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
ctg-bugIssue is a bugIssue is a bugpriority-top-focusTop priority chosen by dev teamTop priority chosen by dev teamstatus-verifiedBug fix is verifiedBug fix is verified
Type
Projects
- StatusShow more project fieldsDone
Activity
Add title pane with unsupported jdk notification (#373)
sergeypospelov commentedon Jul 4, 2022
Some investigation on #373:
It happens, because our Soot has a low dependency on ASM library.
Potential fix:
Will try this out
Add title pane with unsupported jdk notification (#373)
Add title pane with unsupported jdk notification (#373)
dtim commentedon Jul 8, 2022
Related: UnitTestBot does not work on Idea 2022.2 EAP, as it uses JBR 17 as its runtime.
Environment
IntelliJ IDEA 2022.2 Beta (Ultimate Edition)
Build #IU-222.3345.16, built on July 7, 2022
Expiration date: August 6, 2022
Runtime version: 17.0.3+7-b469.19 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.13.0-52-generic
GC: G1 Young Generation, G1 Old Generation
Memory: 16384M
Cores: 16
Non-Bundled Plugins:
com.jetbrains.grayTheme (1.3)
org.utbot.intellij.plugin.id (2022.7-beta)
Kotlin: 222-1.7.0-release-282-IJ3345.16
Current Desktop: ubuntu:GNOME
Actual behavior
No tests are generated, the following exception is thrown:
Squashed commit of the following:
Update Soot and choose an analyzable JRE #373 (#890)
alisevych commentedon Sep 15, 2022
The issue with "Unsupported class file major version" is not reproducing with JDK 13 / 17 - with same code samples.
Code examples are processed without errors and tests are generated.