2015-06-09 13 views
5

Il mio file travis.yml:Retrolambda su Travis CI

language: android 

jdk: oraclejdk8 

android: 
    components: 
    - build-tools-22.0.1 
    - android-22 
    - extra-android-m2repository 

script: 
    - gradle build connectedCheck 

Viene a mancare durante app:compileRetrolambdaDebug con messaggio di errore Process 'command '/usr/lib/jvm/java-8-oracle/bin/java'' finished with non-zero exit value 1.

È possibile eseguire Retrolambda su Travis CI?

Dopo aver aggiunto il parametro --debug, ho ottenuto le seguenti informazioni:

13:44:02.064 [INFO] [system.out] Error! Failed to transform some classes 
13:44:02.073 [INFO] [system.out] java.lang.RuntimeException: java.lang.IllegalAccessException: no such method: cz.skaut.warehousemanager.fragment.ItemDetailFragment.lambda$onViewCreated$32(Bitmap)void/invokeSpecial 
at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:42) 
at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.backportLambda(BackportLambdaInvocations.java:105) 
at net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations$InvokeDynamicInsnConverter.visitInvokeDynamicInsn(BackportLambdaInvocations.java:94) 
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.lambda$transform$4(Transformers.java:106) 
at net.orfjackal.retrolambda.Transformers$$Lambda$2/1190900417.accept(Unknown Source) 
at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:120) 
at net.orfjackal.retrolambda.Transformers.transform(Transformers.java:106) 
at net.orfjackal.retrolambda.Transformers.backportClass(Transformers.java:46) 
at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:72) 
at net.orfjackal.retrolambda.Main.main(Main.java:26) 
13:44:02.086 [INFO] [system.out] Caused by: java.lang.IllegalAccessException: no such method: cz.skaut.warehousemanager.fragment.ItemDetailFragment.lambda$onViewCreated$32(Bitmap)void/invokeSpecial 
at java.lang.invoke.MemberName.makeAccessException(MemberName.java:872) 
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:993) 
at java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:1379) 
at java.lang.invoke.MethodHandles$Lookup.findSpecial(MethodHandles.java:997) 
at net.orfjackal.retrolambda.lambdas.Types.toMethodHandle(Types.java:42) 
at net.orfjackal.retrolambda.lambdas.Types.asmToJdkType(Types.java:19) 
at net.orfjackal.retrolambda.lambdas.LambdaReifier.callBootstrapMethod(LambdaReifier.java:106) 
at net.orfjackal.retrolambda.lambdas.LambdaReifier.reifyLambdaClass(LambdaReifier.java:37) 
... 13 more 
13:44:02.089 [INFO] [system.out] Caused by: java.lang.NoClassDefFoundError: android/support/v4/view/LayoutInflaterFactory 
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:455) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:367) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
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:965) 
at java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:990) 
... 19 more 
13:44:02.092 [INFO] [system.out] Caused by: java.lang.ClassNotFoundException: android.support.v4.view.LayoutInflaterFactory 
at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
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) 
... 32 more 

errore simile viene segnalato here, quindi potrebbe essere Gradle-retrolambda problema plugin.

+0

Avremo sicuramente bisogno di ulteriori informazioni. Credo che sia possibile aggiungere --debug al comando gradle per ottenere una registrazione più dettagliata e quindi possiamo diagnosticare di più. – BoredAndroidDeveloper

+0

Grazie, modificato con maggiori informazioni. –

+0

Hai provato ad aggiungere la soluzione suggerita in quel thread? retrolambda { jvmArgs '-noverify' } – BoredAndroidDeveloper

risposta

14

Dopo trafficando con questo per giorni, per me ha funzionato utilizzando il seguente file .travis.yml:

language: android 
jdk: 
    - oraclejdk7 
    - oraclejdk8 
android: 
    components: 
    - build-tools-22.0.1 
    - android-22 
    - extra-android-support 
    - extra-android-m2repository 
    licenses: 
    - '.+' 

before_install: 
    - export JAVA7_HOME=/usr/lib/jvm/java-7-oracle 
    - export JAVA8_HOME=/usr/lib/jvm/java-8-oracle 
    - export JAVA_HOME=$JAVA7_HOME 
script: 
    - ./gradlew clean assemble || ./gradlew clean assemble 

La più importante da notare è che esportiamo JAVA_HOME come JAVA7_HOME, che io didn' Vedi in tutti gli esempi online.