I’m not in favor of delivering Java 9 support as a separate jar. What we have 
now is exactly the way Oracle expects libraries to implement it.

Ralph

> On Jul 8, 2017, at 7:26 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> I say we keep it simple: Deliver log4j-api-java9 as an add-on to log4j-api
> instead of being clever with log4j-api embedding Java 9 classes a la
> Titanic.
> 
> Thoughts?
> 
> Gary
> 
> On Sat, Jul 8, 2017 at 7:10 PM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
>> I do not think that is how Android development works. The .class files are
>> converted to .dex files from what I can tell, a different byte code format
>> used by both Dalvik (discontinued) and ART.
>> 
>> Gary
>> 
>> On Sat, Jul 8, 2017 at 6:15 PM, Apache <ralph.go...@dslextreme.com> wrote:
>> 
>>> Is it trying to process the class files generated by java? I thought
>>> Android compiled Java source.  If it is looking at class files then it
>>> needs to ignore everything under META-INF
>>> 
>>> Sent from my iPad
>>> 
>>>> On Jul 8, 2017, at 5:58 PM, Gary Gregory <garydgreg...@gmail.com>
>>> wrote:
>>>> 
>>>> We are worst off with our 2.9-SNAPSHOT, I can't even build an app using
>>>> only log4j-api:
>>>> 
>>>> AGPBI: {"kind":"error","text":"Error converting bytecode to dex:\nCause:
>>>> Dex cannot parse version 53 byte code.\nThis is caused by library
>>>> dependencies that have been compiled using Java 8 or above.\nIf you are
>>>> using the \u0027java\u0027 gradle plugin in a library submodule add
>>>> \ntargetCompatibility \u003d \u00271.7\u0027\nsourceCompatibility
>>> \u003d
>>>> \u00271.7\u0027\nto that submodule\u0027s build.gradle
>>>> file.","sources":[{}],"original":"UNEXPECTED TOP-LEVEL
>>>> EXCEPTION:\njava.lang.RuntimeException: Exception parsing classes\n\tat
>>>> com.android.dx.command.dexer.Main.processClass(Main.java:781)\n\tat
>>>> com.android.dx.command.dexer.Main.processFileBytes(Main.java:747)\n\tat
>>>> com.android.dx.command.dexer.Main.access$1200(Main.java:88)\n\tat
>>>> com.android.dx.command.dexer.Main$FileBytesConsumer.processF
>>> ileBytes(Main.java:1689)\n\tat
>>>> com.android.dx.cf.direct.ClassPathOpener.processArchive(Clas
>>> sPathOpener.java:284)\n\tat
>>>> com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPat
>>> hOpener.java:166)\n\tat
>>>> com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOp
>>> ener.java:144)\n\tat
>>>> com.android.dx.command.dexer.Main.processOne(Main.java:695)\n\tat
>>>> com.android.dx.command.dexer.Main.processAllFiles(Main.java:592)\n\tat
>>>> com.android.dx.command.dexer.Main.runMultiDex(Main.java:376)\n\tat
>>>> com.android.dx.command.dexer.Main.run(Main.java:290)\n\tat
>>>> com.android.builder.internal.compiler.DexWrapper.run(DexWrap
>>> per.java:54)\n\tat
>>>> com.android.builder.core.DexByteCodeConverter.lambda$dexInPr
>>> ocess$0(DexByteCodeConverter.java:174)\n\tat
>>>> java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>> Executor.java:1142)\n\tat
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>> lExecutor.java:617)\n\tat
>>>> java.lang.Thread.run(Thread.java:745)\nCaused by:
>>>> com.android.dx.cf.iface.ParseException: bad class file magic
>>> (cafebabe) or
>>>> version (0035.0000)\n\tat
>>>> com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassF
>>> ile.java:476)\n\tat
>>>> com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFi
>>> le.java:406)\n\tat
>>>> com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIf
>>> Necessary(DirectClassFile.java:388)\n\tat
>>>> com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClas
>>> sFile.java:251)\n\tat
>>>> com.android.dx.command.dexer.Main.parseClass(Main.java:793)\n\tat
>>>> com.android.dx.command.dexer.Main.access$1600(Main.java:88)\n\tat
>>>> com.android.dx.command.dexer.Main$ClassParserTask.call(Main.
>>> java:1728)\n\tat
>>>> com.android.dx.command.dexer.Main.processClass(Main.java:779)\n\t... 16
>>>> more\n","tool":"Dex"}
>>>> AGPBI: {"kind":"error","text":"1 error; aborting","sources":[{}]}
>>>> 
>>>> Can we split off this Java 9 stuff in a separate module?
>>>> 
>>>> Gary
>>>> 
>>>>> On Sat, Jul 8, 2017 at 4:01 PM, Matt Sicker <boa...@gmail.com> wrote:
>>>>> 
>>>>> If you've got some instructions on how to even get an Android project
>>> up
>>>>> and running, getting some test code to play with would certainly help.
>>> Long
>>>>> ago when I tried debugging some Android issues with Log4j, I couldn't
>>> even
>>>>> get that far. :/
>>>>> 
>>>>>> On 8 July 2017 at 17:31, Gary Gregory <garydgreg...@gmail.com> wrote:
>>>>>> 
>>>>>> A quick follow up to note that with 2.8.2, using log4j-api does not
>>> cause
>>>>>> problems but then adding log4j-core causes the app to fail to start.
>>> So I
>>>>>> definitively see an Android epic for 2.10. Maybe this is when we want
>>> to
>>>>>> split up log4j-core.
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>> On Sat, Jul 8, 2017 at 3:20 PM, Gary Gregory <garydgreg...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> So here I am with my family our of town on a weekend, and I thought
>>> I'd
>>>>>>> give Log4j on Android a try.
>>>>>>> 
>>>>>>> The first thing I run into is:
>>>>>>> 
>>>>>>> FAILURE: Build failed with an exception.
>>>>>>> 
>>>>>>> * What went wrong:
>>>>>>> Execution failed for task ':Application:transformResourc
>>> esWithMergeJav
>>>>>>> aResForDebug'.
>>>>>>>> com.android.build.api.transform.TransformException:
>>>>>>> com.android.builder.packaging.DuplicateFileException: Duplicate
>>> files
>>>>>>> copied in APK META-INF/LICENSE
>>>>>>> File1: C:\Users\ggregory\.gradle\caches\modules-2\files-2.1\
>>>>>>> org.apache.logging.log4j\log4j-core\2.8.2\
>>>>> 979fc0cf8460302e4ffbfe38c1b66a
>>>>>>> 99450b0bb7\log4j-core-2.8.2.jar
>>>>>>> File2: C:\Users\ggregory\.gradle\caches\modules-2\files-2.1\
>>>>>>> org.apache.logging.log4j\log4j-api\2.8.2\
>>>>> e590eeb783348ce8ddef205b82127f
>>>>>>> 9084d82bf3\log4j-api-2.8.2.jar
>>>>>>> 
>>>>>>> 
>>>>>>> * Try:
>>>>>>> Run with --stacktrace option to get the stack trace. Run with --info
>>> or
>>>>>>> --debug option to get more log output.
>>>>>>> 
>>>>>>> BUILD FAILED
>>>>>>> 
>>>>>>> Total time: 1.995 secs
>>>>>>> 
>>>>>>> which is solved by:
>>>>>>> 
>>>>>>> https://stackoverflow.com/questions/37586800/android-
>>>>>>> gradle-duplicate-files-copied-in-apk-meta-inf-license-txt
>>>>>>> 
>>>>>>> Which means I have to add this to my build:
>>>>>>> 
>>>>>>> packagingOptions {
>>>>>>>   exclude 'META-INF/DEPENDENCIES'
>>>>>>>   exclude 'META-INF/LICENSE'
>>>>>>> }
>>>>>>> 
>>>>>>> I wonder if we should generate these files pretending we are in an
>>> uber
>>>>>> jar, either:
>>>>>>> 
>>>>>>> - with the project name in the name like META-INF/log4j2.LICENSE
>>>>>>> 
>>>>>>> - with maven AID in the name like META-INF/log4j-api.LICENSE
>>>>>>> 
>>>>>>> - with maven coords in the name like META-INF/org.apache.logging.
>>>>>> log4j-log4j-api.LICENSE
>>>>>>> 
>>>>>>> As an aside files like LICENSE and NOTICE do not have .txt extensions
>>>>>> which is lame IMO.
>>>>>>> 
>>>>>>> Ignore and do nothing? Thoughts?
>>>>>>> 
>>>>>>> Gary
>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> --
>>>>> Matt Sicker <boa...@gmail.com>
>>>>> 
>>> 
>>> 
>>> 
>> 


Reply via email to