I just started a very simple project and tried to use both ButterKnife and Jack compiler, but it seems they do not cope with each other well.
Gradle plugin version: 2.2.0-alpha5
in my module build.gradle I added:
compile 'com.jakewharton:butterknife:8.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.2.1'
And the error message is:
Error:Execution failed for task ':app:transformJackWithJackForDebug'.
java.lang.AssertionError: java.lang.IllegalArgumentException
Did I miss something or it's just they are not compatible?
Paste the full stacktrace please.
On Tue, Jul 12, 2016 at 11:44 PM å¼ æµ·æž— [email protected] wrote:
I just started a very simple project and tried to use both ButterKnife and
Jack compiler, but it seems they do not cope with each other well.Gradle plugin version: 2.2.0-alpha5
in my module build.gradle I added:
compile 'com.jakewharton:butterknife:8.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.2.1'And the error message is:
Error:Execution failed for task ':app:transformJackWithJackForDebug'.
java.lang.AssertionError: java.lang.IllegalArgumentExceptionDid I miss something or it's just they are not compatible?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/JakeWharton/butterknife/issues/673, or mute the
thread
https://github.com/notifications/unsubscribe/AAEEEXCirUxtqI30RlMH-yxFOtZ29RRKks5qVF8QgaJpZM4JLCT5
.
Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformJackWithJackForDebug'.
> java.lang.AssertionError: java.lang.IllegalArgumentException
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformJackWithJackForDebug'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:66)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:153)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:150)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:98)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:92)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:92)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:83)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:99)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:48)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:237)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.lang.RuntimeException: java.lang.AssertionError: java.lang.IllegalArgumentException
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:126)
at com.android.builder.core.AndroidBuilder.convertByteCodeUsingJackApis(AndroidBuilder.java:1821)
at com.android.builder.core.AndroidBuilder.convertByteCodeUsingJack(AndroidBuilder.java:1648)
at com.android.build.gradle.internal.transforms.JackTransform.runJack(JackTransform.java:219)
at com.android.build.gradle.internal.transforms.JackTransform.transform(JackTransform.java:193)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:177)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:173)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:172)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:245)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:232)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 70 more
Caused by: java.lang.AssertionError: java.lang.IllegalArgumentException
at com.android.jack.frontend.java.JackBatchCompiler.performCompilation(JackBatchCompiler.java:226)
at com.android.jack.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:1712)
at com.android.jack.frontend.java.JackBatchCompiler.compile(JackBatchCompiler.java:188)
at com.android.jack.Jack.buildSession(Jack.java:977)
at com.android.jack.Jack.run(Jack.java:496)
at com.android.jack.api.v01.impl.Api01ConfigImpl$Api01CompilationTaskImpl.run(Api01ConfigImpl.java:102)
... 85 more
Caused by: java.lang.IllegalArgumentException
at com.sun.source.util.Trees.instance(Trees.java:76)
at butterknife.compiler.ButterKnifeProcessor.init(ButterKnifeProcessor.java:123)
at com.android.jack.eclipse.jdt.internal.compiler.apt.dispatch.BatchAnnotationProcessorManager.discoverNextProcessor(BatchAnnotationProcessorManager.java:157)
at com.android.jack.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:116)
at com.android.jack.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:159)
at com.android.jack.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:909)
at com.android.jack.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:434)
at com.android.jack.frontend.java.JackBatchCompiler.performCompilation(JackBatchCompiler.java:223)
... 90 more
I tried to change the ButterKnife version to 8.1.0 and it works well, but 8.2.0 and 8.2.1 complain exceptions above.
I don't know if it's related to your issue, but once I updated my gradle (and AS) to preview 5, on
version 8.2.0 and 8.2.1 I'm getting this error:
Error:(27, 0) Timeout waiting to lock cp_dsl class cache for script '/Users/leonardo/StudioProjects/MaterialNotes/dependencies.gradle' (/Users/leonardo/.gradle/caches/2.10/scripts/dependencies_7dh1rpm6pyjkhy37vu4750p7f/cp_dsl). It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 65744
Owner Operation: unknown
Our operation: Initialize cache
Lock file: /Users/leonardo/.gradle/caches/2.10/scripts/dependencies_7dh1rpm6pyjkhy37vu4750p7f/cp_dsl/cache.properties.lock
<a href="openFile:/Users/leonardo/StudioProjects/MaterialNotes/build.gradle">Open File</a>
If they are not related I can create another issue...
And using 8.1.0 gradle builds flawlessly
It is not related, but it's not a ButterKnife problem either.
On Wed, Jul 13, 2016 at 1:58 PM Leonardo Ferrari [email protected]
wrote:
I don't know if it's related to your issue, but once I updated my gradle
(and AS) to preview 5, on ```
version 8.2.0 and 8.2.1 I'm getting this error:
Error:(27, 0) Timeout waiting to lock cp_dsl class cache for script
'/Users/leonardo/StudioProjects/MaterialNotes/dependencies.gradle'
(/Users/leonardo/.gradle/caches/2.10/scripts/dependencies_7dh1rpm6pyjkhy37vu4750p7f/cp_dsl).
It is currently in use by another Gradle instance.
Owner PID: unknown
Our PID: 65744
Owner Operation: unknown
Our operation: Initialize cache
Lock file:
/Users/leonardo/.gradle/caches/2.10/scripts/dependencies_7dh1rpm6pyjkhy37vu4750p7f/cp_dsl/cache.properties.lock
Open FileIf they are not related I can create another issue...
—
You are receiving this because you commented.Reply to this email directly, view it on GitHub
https://github.com/JakeWharton/butterknife/issues/673#issuecomment-232436165,
or mute the thread
https://github.com/notifications/unsubscribe/AAEEEXdacBjxI_b99Nd0wvpRi3Filx7Vks5qVSc5gaJpZM4JLCT5
.
@JakeWharton Sure, so maybe I should post this on Android issue tracker...
Thanks and sorry
I think the problem is that to support Butterknife in libraries the Trees class is used, Can only handle compilation tasks created by the javac compiler. Since Jack does not use the javac compiler it will not work. @JakeWharton I did not look too deeply into the Butterknife-compiler code. But I assume trees is used to parse the import statements in Java source files?
Filed an issue for jack https://code.google.com/p/android/issues/detail?id=218017
The same problem happened on 2.2 Beta .
Will ping this thread when the Android Gradle plugin supports triggering Jack plugins (will be soon) - this is the migration path for Jack.
@lukasb the problem is that it is currently not even possible to catch this exception in the processor. Butterknife works fine without being able to parse the ast (generated code won't be as nice but it will still work). Would it be possible for jack to make this exception catchable/provide a way to ignore this error?
I have a local copy that catches the exception and ignores it. The Trees
documentation declares that it throws IAE when not supported.
On Wed, Aug 17, 2016, 8:32 PM Gautam Korlam [email protected]
wrote:
@lukasb https://github.com/lukasb the problem is that it is currently
not even possible to catch this exception in the professor. Butterknife
works fine without being able to parse the ast (generated code won't be as
nice but it will still work). Would it be possible for jack to make this
exception catchable/provide a way to ignore this error?—
You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub
https://github.com/JakeWharton/butterknife/issues/673#issuecomment-240590725,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEY5RHKJmBqc4nVVkDCgl9UeqxJpyks5qg6gqgaJpZM4JLCT5
.
Might be a suitable workaround for now? Prevents use in library projects with Jack, but I think Jack doesn't support library projects anyway (presumably since they go to jar not dex).
https://github.com/JakeWharton/butterknife/compare/jw/lumberjack
Huh. I thought my branch did the same thing, but it didn't seem to work. But that workaround was initially what I had in mind as well since jack does not work with libraries. If it works, we can merge it and live with not so nice generated code when Jack is enabled. Just have to make a note abt it in the readme probably
The problem continues...
classpath 'com.android.tools.build:gradle:2.3.0-rc1'
buildToolsVersion "25.0.2"
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
With Above versions still Jack gives issue.
Is there any update about it?
Jack, as a project, is dead.
Yep @JakeWharton is right.
Here is blog link which says Jack toolchain is deprecated.
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
In my project I'm using Jack compiler along with:
//ButterKnife
compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
annotationProcessor "com.jakewharton:butterknife-compiler:$BUTTERKNIFE_VERSION"
where BUTTERKNIFE_VERSION = '8.5.1'
Then in my project's build.gradle I have:
dependencies {
classpath 'com.android.tools.build:gradle:2.5.0-alpha-preview-01'
...
}
and as Gradle version declared in gradle.properties I'm using:
distributionUrl=https://services.gradle.org/distributions-snapshots/gradle-3.5-20170213202653+0000-all.zip
No problems occured.
@DearDhruv @ulaserdegor could you check my config and let me know if this is still occurs?
Is this article they also say, that Jack is deprecated and suggest using Android Studio's default Java 8 toolchain
https://developer.android.com/studio/preview/features/java8-support.html
Most helpful comment
Jack, as a project, is dead.