collinsmith/riiablo

Log4j2 causing compilation fail on android

Closed this issue · 5 comments

Log4j2 is causing a compilation fail for android. I'll look into this when I get a chance, but the basic things I've tried on google haven't helped. I haven't tried rolling back versions or updating gradle version yet (or playing with android options). Worst case, I need to write a logger package like I was before and drop Log4j2 -- not a huge deal, but it's time that could be better spent elsewhere. Some things like this in log4j2 have been a pain...

Caused by: java.lang.NoSuchMethodException: no such method: org.apache.logging.log4j.util.StackLocator.lambda$getCallerClass$3(String,String,Stream)Optional/invokeStatic
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':android:transformClassesWithDesugarForDebug'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
	at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
	at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\33.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\4.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\28.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\core\build\libs\core-1.0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\classes\debug --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\1.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\3.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\4.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\5.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\6.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\8.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\10.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\11.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\12.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\13.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\14.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\15.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\16.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\17.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\18.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\19.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\20.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\21.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\22.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\23.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\24.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\25.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\27.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\28.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\29.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\30.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\32.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\33.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\34.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\35.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\36.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\37.jar --bootclasspath_entry C:\android\platforms\android-28\android.jar --bootclasspath_entry C:\android\platforms\android-28\optional\org.apache.http.legacy.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.mock.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.base.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.runner.jar --bootclasspath_entry C:\java\jdk8\jre\lib\resources.jar --bootclasspath_entry C:\java\jdk8\jre\lib\rt.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jsse.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jce.jar --bootclasspath_entry C:\java\jdk8\jre\lib\charsets.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jfr.jar --min_sdk_version 23 --nodesugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes --legacy_jacoco_fix}
	at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:104)
	at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:212)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
	... 33 more
Caused by: com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\33.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\4.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\28.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\core\build\libs\core-1.0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\classes\debug --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\1.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\3.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\4.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\5.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\6.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\8.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\10.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\11.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\12.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\13.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\14.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\15.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\16.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\17.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\18.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\19.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\20.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\21.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\22.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\23.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\24.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\25.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\27.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\28.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\29.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\30.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\32.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\33.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\34.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\35.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\36.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\37.jar --bootclasspath_entry C:\android\platforms\android-28\android.jar --bootclasspath_entry C:\android\platforms\android-28\optional\org.apache.http.legacy.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.mock.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.base.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.runner.jar --bootclasspath_entry C:\java\jdk8\jre\lib\resources.jar --bootclasspath_entry C:\java\jdk8\jre\lib\rt.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jsse.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jce.jar --bootclasspath_entry C:\java\jdk8\jre\lib\charsets.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jfr.jar --min_sdk_version 23 --nodesugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes --legacy_jacoco_fix}
	at com.android.build.gradle.internal.transforms.DesugarTransform.transform(DesugarTransform.java:292)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
	... 49 more
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\33.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\4.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\28.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\core\build\libs\core-1.0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\classes\debug --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\1.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\3.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\4.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\5.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\6.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\8.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\10.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\11.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\12.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\13.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\14.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\15.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\16.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\17.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\18.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\19.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\20.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\21.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\22.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\23.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\24.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\25.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\27.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\28.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\29.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\30.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\32.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\33.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\34.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\35.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\36.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\37.jar --bootclasspath_entry C:\android\platforms\android-28\android.jar --bootclasspath_entry C:\android\platforms\android-28\optional\org.apache.http.legacy.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.mock.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.base.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.runner.jar --bootclasspath_entry C:\java\jdk8\jre\lib\resources.jar --bootclasspath_entry C:\java\jdk8\jre\lib\rt.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jsse.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jce.jar --bootclasspath_entry C:\java\jdk8\jre\lib\charsets.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jfr.jar --min_sdk_version 23 --nodesugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes --legacy_jacoco_fix}
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
	at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
	at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
	at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:146)
	at com.android.build.gradle.internal.transforms.DesugarTransform.processNonCachedOnes(DesugarTransform.java:466)
	at com.android.build.gradle.internal.transforms.DesugarTransform.transform(DesugarTransform.java:277)
	... 52 more
Caused by: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\33.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\4.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\28.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\core\build\libs\core-1.0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\classes\debug --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\1.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\3.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\4.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\5.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\6.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\8.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\10.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\11.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\12.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\13.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\14.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\15.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\16.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\17.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\18.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\19.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\20.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\21.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\22.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\23.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\24.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\25.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\27.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\28.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\29.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\30.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\32.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\33.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\34.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\35.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\36.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\37.jar --bootclasspath_entry C:\android\platforms\android-28\android.jar --bootclasspath_entry C:\android\platforms\android-28\optional\org.apache.http.legacy.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.mock.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.base.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.runner.jar --bootclasspath_entry C:\java\jdk8\jre\lib\resources.jar --bootclasspath_entry C:\java\jdk8\jre\lib\rt.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jsse.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jce.jar --bootclasspath_entry C:\java\jdk8\jre\lib\charsets.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jfr.jar --min_sdk_version 23 --nodesugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes --legacy_jacoco_fix}
	at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {--input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\33.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\4.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\28.jar --input C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --output C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\desugar\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\core\build\libs\core-1.0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\classes\debug --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\0.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\1.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\2.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\3.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\4.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\5.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\6.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\7.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\8.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\9.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\10.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\11.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\12.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\13.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\14.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\15.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\16.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\17.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\18.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\19.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\20.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\21.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\22.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\23.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\24.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\25.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\26.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\27.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\28.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\29.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\30.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\31.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\32.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\33.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\34.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\35.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\36.jar --classpath_entry C:\Users\csmith\projects\libgdx\diablo\android\build\intermediates\transforms\stackFramesFixer\debug\37.jar --bootclasspath_entry C:\android\platforms\android-28\android.jar --bootclasspath_entry C:\android\platforms\android-28\optional\org.apache.http.legacy.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.mock.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.base.jar --bootclasspath_entry C:\android\platforms\android-28\optional\android.test.runner.jar --bootclasspath_entry C:\java\jdk8\jre\lib\resources.jar --bootclasspath_entry C:\java\jdk8\jre\lib\rt.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jsse.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jce.jar --bootclasspath_entry C:\java\jdk8\jre\lib\charsets.jar --bootclasspath_entry C:\java\jdk8\jre\lib\jfr.jar --min_sdk_version 23 --nodesugar_try_with_resources_if_needed --desugar_try_with_resources_omit_runtime_classes --legacy_jacoco_fix}
	at com.android.build.gradle.internal.process.GradleProcessResult.buildProcessException(GradleProcessResult.java:73)
	at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:48)
	at com.android.build.gradle.internal.transforms.DesugarTransform.lambda$processNonCachedOnes$3(DesugarTransform.java:462)
	at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
	... 4 more
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\java\jdk8\bin\java.exe'' finished with non-zero exit value 1
	at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:389)
	at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:46)
	... 6 more

I worry that this is caused by how the library is included within :core which doesn't allow the android api and implementation

project(":core") {
    dependencies {
        compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.13.3'
        compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.13.3'
    }
}
project(":android") {
    dependencies {
        api 'org.apache.logging.log4j:log4j-api:2.13.3' // tried without these as well
        implementation 'org.apache.logging.log4j:log4j-core:2.13.3' // tried without these as well
        annotationProcessor 'org.apache.logging.log4j:log4j-core:2.13.3'
    }
}

I plotted out the possibility of writing my own logging library. Not difficult, but I'd need to cut tons of features (which I don't care about anyways, like Marker and some stuff more geared at enterprise app performance). I don't anticipate it taking very long to do (maybe a few days to get it working), but I don't want to commit to doing that just yet.

I already have some ideas though on stuff that would make my life a lot easier in regards to riiablo-specific such as removing that dependency on the xml configuration file or making defining log levels easier. I'd love to support something within LogManager like setLevel(String,Level) to set all loggers that belong to the trie result to the specified value -- I think this would be awesome for testing or in release to, e.g., enable debug mode for all com.riiablo.item loggers.

I decided to move forward with my own logger implementation if only to learn how log4j2 works. What I just committed tests fine and needs some tweaks, but it could be workable. Since this is specific to this project, I dumped a lot of the customizable stuff that log4j2 provides and put placeholders where I think future extensions might go (e.g., different or multiple appenders). I have not implemented a thread context map yet, which is sort of a linchpin if I wanted to continue with this package. Not sure how threading will work either, and no implementation for async calls or object pooling (not sure to the extent log4j2 used pooling in my case though). This is definitely a step back from log4j2 until the above things are implemented, but it's no worse than the LibGDX logger was.

It isn't a direct 1-to-1 copy of log4j2, I decided to change the things I mentioned in above comments and use a trie-based approach with package-level log levels (called contexts). I implemented the concept of a "deferred" logger, which means that the logger doesn't manage its log level, and when the log manager encounters a log level change for a package, it will propagate the change down to all of the loggers. If a logger has its level set explicitly, then it will no longer defer to the manager unless the manager has a forced log level set. This seems practical for my use-case, but only time will tell if it's actually a good idea (as it relies on programmatic config of log levels). So far so good though.

I figure the trie-based approach might help when developing out new features. E.g., MPQ Viewer can use standard warn log level, but set com.riiablo.codec to trace to track down codec issues. Meanwhile, I can slave every logger in :core to the root loggers level, and optionally use cvars or hard code log levels for engine systems. It also could be really cool to, down the line, support feature-based logging where you'd be able to set the log level for a bunch of specific loggers with a single command (across multiple packages) -- the idea being if there's an issue with reading items, I could set the end-to-end log level for all the item code from d2s to item reader to item.

Also, not a big deal for me since I'm not going to bother testing this, but I'm not supporting loggers without fqcn as log names. This will just have to be an invariant for the time being since I don't know what will happen without them.

Thread context map has been implemented. Very similar to StringMap from log4j2, but with optimizations and impl details specific to this project use-case. It's been implemented into MDC as a ThreadLocal.

I'm going to put off async and object pooling until later or they become a problem (TODO create issues). Object pooling shouldn't be a big deal -- I'd start with pooling LogEvent and Message. Async may require a bit more effort -- for starters, I'd start by passing LogEvent to another thread where the actual Message encoding and output takes place.

Going to play a bit more and work on replacing implementations so I can close this issue.

Log4j2 has been removed as a dependency and replaced with com.riiablo.logger.

I'm getting some cache issues when compiling for android because org.slf4j is missing :(, but this is something on my end that needs to be figured out. It compiled once so I was able to test that it runs. Fixed by adding org.slf4j to gradle script, compiling, and removing.