Search code examples
codenameone

Building CN1 app doesn't work due to problem with retrolambda


My app won't build for iPhone and Android anymore, apparently due to a problem with retrolambda.

I haven't build for quite some time (I think 6-7 months), but I don't think the way my app uses lambda functions has changed significantly (but I may be wrong, since I am not sure how to read the error message), so I was wondering if something has changed in the CN1 build process?

If not, any help on how to 'decode' the below error log to understand the problem would be really great. I think I've identified the offending code, but it seems to be written in the same way that compiled successfully before.

Executing: /usr/local/bin/pod --version Process return code is 0
Pods version: 1.10.0

User-level: 1000
Request Args: 
-----------------
ios.background_modes=fetch
ios.multitasking=true
java.version=8
ios.project_type=ios
ios.testFlight=true
android.multidex=true
ios.statusbar_hidden=false
ios.application_exits=false
desktop.theme=iOS7Theme
ios.includePush=false
ios.buildType=debug
ios.interface_orientation=UIInterfaceOrientationPortrait:UIInterfaceOrientationPortraitUpsideDown:UIInterfaceOrientationLandscapeLeft:UIInterfaceOrientationLandscapeRight
ios.newStorageLocation=true
ios.enableBadgeClear=false
android.release=true
android.debug=false
-------------------
OS Version: 10.15.3
Executing: /Applications/Xcode11.3.app/Contents/Developer/usr/bin/xcodebuild -version Process return code is 0
Result is Xcode 11.3.1
Build version 11C505

Xcode version line matching pattern: Xcode 11.3.1
Executing: /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home/bin/java -Dretrolambda.inputDir=/Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes -Dretrolambda.classpath=/Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes:/var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/temp3257553847769871116.jar -Dretrolambda.outputDir=/Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes_retrolamda -Dretrolambda.bytecodeVersion=49 -Dretrolambda.defaultMethods=true -jar /var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/temp5326134886678924546.jar Retrolambda 2.5.1
00:00  INFO: Bytecode version: 49 (Java 5)
00:00  INFO: Default methods:  true
00:00  INFO: Input directory:  /Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes
00:00  INFO: Output directory: /Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes_retrolamda
00:00  INFO: Classpath:        [/Volumes/MacintoshHD2/temp/build4429909335558849128xxx/classes, /var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/temp3257553847769871116.jar]
00:00  INFO: Included files:   all
00:00  INFO: Agent enabled:    false
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$1
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$3
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$4
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$5
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$6
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$7
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyCheckBox$$Lambda$8
00:00  INFO: Saving lambda class: com/MyApp/MyApp/MyDateAndTimePicker$$Lambda$1
00:00 ERROR: Failed to run Retrolambda
java.lang.RuntimeException: Failed to backport class: com/MyApp/MyApp/ScreenListOfItemLists
    at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:129)
    at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:107)
    at net.orfjackal.retrolambda.Transformers.backportClass(Transformers.java:47)
    at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:83)
    at net.orfjackal.retrolambda.Main.main(Main.java:28)
Caused by: java.lang.RuntimeException: Failed to backport lambda or method reference: com/MyApp/MyApp/ScreenListOfItemLists.lambda$addCommandsToToolbar$1(Lcom/codename1/ui/events/ActionEvent;)V (7)
    at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:42)
    at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.backportLambda(BackportLambdaInvocations.java:187)
    at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.visitInvokeDynamicInsn(BackportLambdaInvocations.java:176)
    at net.orfjackal.retrolambda.asm.ClassReader.readCode(ClassReader.java:1519)
    at net.orfjackal.retrolambda.asm.ClassReader.readMethod(ClassReader.java:1032)
    at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:708)
    at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:521)
    at net.orfjackal.retrolambda.Transformers.lambda$transform$4(Transformers.java:107)
    at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:125)
    ... 4 more
Caused by: java.lang.IllegalAccessException: no such method: com.MyApp.MyApp.ScreenListOfItemLists.lambda$addCommandsToToolbar$1(ActionEvent)void/invokeSpecial
    at java.lang.invoke.MemberName.makeAccessException(MemberName.java:867)
    at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1003)
    at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1386)
    at java.lang.invoke.MethodHandles$Lookup.findSpecial(MethodHandles.java:1004)
    at net.orfjackal.retrolambda.lambdas.Types.toMethodHandle(Types.java:53)
    at net.orfjackal.retrolambda.lambdas.Types.asmToJdkType(Types.java:26)
    at net.orfjackal.retrolambda.lambdas.LambdaReifier.callBootstrapMethod(LambdaReifier.java:106)
    at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:37)
    ... 12 more
Caused by: java.lang.NoClassDefFoundError: com/parse4cn1/ParseObject
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    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.invoke.MethodHandleNatives.resolve(Native Method)
    at java.lang.invoke.MemberName$Factory.resolve(MemberName.java:975)
    at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1000)
    ... 18 more
Caused by: java.lang.ClassNotFoundException: com.parse4cn1.ParseObject
    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)
    ... 31 more
Process return code is 1

Solution

  • This fails in the retro-lambda stage but has nothing to do with that. See this error:

    Caused by: java.lang.ClassNotFoundException: com.parse4cn1.ParseObject
        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)
        ... 31 more
    

    ParseObject is missing from your build. Try deleting the build, bin, target and dist directories if they exist in your project. It seems there's a dependency that isn't properly included. Also make sure you didn't change the classpath in any way.