When using recent jsweet-transpiler artifacts (versions 3.0.0, 3.1.0-SNAPSHOT) in Gradle 6.7.1 the ClassReader of ASM cannot read a class file in the JAR. After further investigation I figured that the JAR contains a Test.class file with invalid content.
Other Gradle versions are affected as well because Gradle/ASM is not failure tolerant to invalid class files.
* What went wrong:
Failed to create Jar file /Users/***/.gradle/caches/jars-8/117efba34acbd6ff63faa5dcc2adbd82/jsweet-transpiler-3.1.0-SNAPSHOT.jar.
> java.lang.IllegalArgumentException (no error message)
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.GradleException: Failed to create Jar file /Users/***/.gradle/caches/jars-8/117efba34acbd6ff63faa5dcc2adbd82/jsweet-transpiler-3.1.0-SNAPSHOT.jar.
at org.gradle.internal.classpath.ClasspathBuilder.jar(ClasspathBuilder.java:47)
at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.transform(InstrumentingClasspathFileTransformer.java:76)
at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.transform(InstrumentingClasspathFileTransformer.java:70)
at org.gradle.internal.classpath.DefaultCachedClasspathTransformer$TransformFile.lambda$schedule$0(DefaultCachedClasspathTransformer.java:261)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:259)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:177)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:163)
at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.lambda$visitEntries$1(InstrumentingClasspathFileTransformer.java:89)
at org.gradle.internal.classpath.ClasspathWalker.visitJarContents(ClasspathWalker.java:91)
at org.gradle.internal.classpath.ClasspathWalker.visit(ClasspathWalker.java:55)
at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.visitEntries(InstrumentingClasspathFileTransformer.java:87)
at org.gradle.internal.classpath.InstrumentingClasspathFileTransformer.lambda$transform$0(InstrumentingClasspathFileTransformer.java:78)
at org.gradle.internal.classpath.ClasspathBuilder.buildJar(ClasspathBuilder.java:58)
at org.gradle.internal.classpath.ClasspathBuilder.jar(ClasspathBuilder.java:45)
... 6 more
Solution
The file in src/main/resources/Test.class must not be packaged in the transpiler JAR file.
Problem
When using recent
jsweet-transpiler
artifacts (versions3.0.0
,3.1.0-SNAPSHOT
) in Gradle 6.7.1 theClassReader
of ASM cannot read a class file in the JAR. After further investigation I figured that the JAR contains aTest.class
file with invalid content.Other Gradle versions are affected as well because Gradle/ASM is not failure tolerant to invalid class files.
Solution
The file in
src/main/resources/Test.class
must not be packaged in the transpiler JAR file.