gradle-retrolambda
gradle-retrolambda copied to clipboard
Retrolambda in library projects and main projects can break the build
I actually think this is related to #60.
Project setup:
- library using retro lambda
- [...]
- main-project using retro lambda
Now from a gradle clean one always needs to build twice.
The first build will fail on main-project:compileRetrolambdaDebug
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':main-project:compileRetrolambdaDebug'.
> Process 'command 'C:\Program Files\Java\jdk1.8.0_40\bin\java.exe'' finished with non-zero exit value 1
The second build succeeds. I think it's because the repackaged files are not used the first build, but they are the second time (when it's cached due to incremental).
Mind posting a little bit more info? What does your build.gradle(s) look like, and do you see exactly what exception it's failing with? (You may have to run with --info). Also, this repo has some sample projects including and android project which depends on and android lib project both with retrolambda applied. Do you see the same issue if you try to build the samples?
Naturally. Here you can find four build.gradle files.
I don't see the exception but I will try to run it with --info
13:53:31: Executing external task 'assembleDebug --info --stacktrace
Error! Failed to transform some classes
java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/activeandroid/Model
at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:42)
at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.backportLambda(Backpor
tLambdaInvocations.java:139)
at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.visitInvokeDynamicInsn
(BackportLambdaInvocations.java:128)
at net.orfjackal.retrolambda.asm.ClassReader.readCode(ClassReader.java:1439)
at net.orfjackal.retrolambda.asm.ClassReader.readMethod(ClassReader.java:1017)
at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:693)
at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:506)
at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:90)
at net.orfjackal.retrolambda.Transformers.backportClass(Transformers.java:37)
at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:70)
at net.orfjackal.retrolambda.Main.main(Main.java:26)
Caused by: java.lang.NoClassDefFoundError: com/activeandroid/Model
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at net.orfjackal.retrolambda.NonDelegatingClassLoader.loadClass(NonDelegatingClassLoader.java:25)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at net.orfjackal.retrolambda.NonDelegatingClassLoader.loadClass(NonDelegatingClassLoader.java:25)
at sun.invoke.util.BytecodeDescriptor.parseSig(BytecodeDescriptor.java:83)
at sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:54)
at sun.invoke.util.BytecodeDescriptor.parseMethod(BytecodeDescriptor.java:41)
at java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:1067)
at net.orfjackal.retrolambda.lambdas.Types.toMethodType(Types.java:26)
at net.orfjackal.retrolambda.lambdas.LambdaReifier.callBootstrapMethod(LambdaReifier.java:104)
at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:37)
... 10 more
Caused by: java.lang.ClassNotFoundException: com.activeandroid.Model
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at net.orfjackal.retrolambda.NonDelegatingClassLoader.loadClass(NonDelegatingClassLoader.java:27)
... 37 more
:evergive-heartbeat:compileRetrolambdaDebug FAILED
:evergive-heartbeat:compileRetrolambdaDebug (Thread[main,5,main]) completed. Took 1.06 secs.
com.activeandroid.Model doesn't contains retrolambda btw.
I am having this exact same issue. It's not effecting us when building locally from inside Studio, but it's effecting our CI server.
What can I post to help?
Hm, this looks related to #105, can you try the solution posted there?
That was already in my build.gradle :(
@evant that worked for me, thanks a lot
i.e. adding
retrolambda { jvmArgs '-noverify' }
@wheelerruss
retrolambda { jvmArgs '-noverify' }
I added. but the error stil existing.
:app:compileRetrolambdaDebug Error:Could not create the Java Virtual Machine. Error:A fatal exception has occurred. Program will exit. Unrecognized option: -arg1 Error:Execution failed for task ':app:compileRetrolambdaDebug'.
Process 'command 'F:\DDH\java\jdk\bin\java.exe'' finished with non-zero exit value 1