Giter Club home page Giter Club logo

Comments (10)

sebasira avatar sebasira commented on May 28, 2024

I've also found this, that could help to identify the problem.

from remap.

schuettec avatar schuettec commented on May 28, 2024

from remap.

sebasira avatar sebasira commented on May 28, 2024

Of Course! This is the full stacktrace:

2020-10-07 10:10:50.880 4548-4548/ar.com.siid.telemetricprivate.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ar.com.siid.telemetricprivate.debug, PID: 4548
    java.lang.ExceptionInInitializerError
        at com.remondis.remap.InvocationSensor.<init>(InvocationSensor.java:30)
        at com.remondis.remap.MappingConfiguration.getPropertyFromFieldSelector(MappingConfiguration.java:538)
        at com.remondis.remap.MappingConfiguration.reassign(MappingConfiguration.java:228)
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:27)
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42)
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InvocationTargetException-->null
        at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:345)
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93)
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
        at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
        at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
        at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174)
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153)
        at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73)
        at com.remondis.remap.InvocationSensor.<init>(InvocationSensor.java:30) 
        at com.remondis.remap.MappingConfiguration.getPropertyFromFieldSelector(MappingConfiguration.java:538) 
        at com.remondis.remap.MappingConfiguration.reassign(MappingConfiguration.java:228) 
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:27) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96) 
        at android.app.Activity.performCreate(Activity.java:7802) 
        at android.app.Activity.performCreate(Activity.java:7791) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:459)
        at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:452)
        at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:334)
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93) 
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91) 
        at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) 
        at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) 
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116) 
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291) 
        at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221) 
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174) 
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153) 
        at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73) 
        at com.remondis.remap.InvocationSensor.<init>(InvocationSensor.java:30) 
        at com.remondis.remap.MappingConfiguration.getPropertyFromFieldSelector(MappingConfiguration.java:538) 
        at com.remondis.remap.MappingConfiguration.reassign(MappingConfiguration.java:228) 
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:27) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96) 
        at android.app.Activity.performCreate(Activity.java:7802) 
        at android.app.Activity.performCreate(Activity.java:7791) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: java.lang.UnsupportedOperationException: can't load this type of class file
        at java.lang.ClassLoader.defineClass(ClassLoader.java:591)
        at java.lang.reflect.Method.invoke(Native Method) 
        at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:459) 
        at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:452) 
        at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:334) 
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:93) 
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91) 
        at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) 
        at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) 
        at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116) 
        at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291) 
        at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221) 
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174) 
        at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153) 
        at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73) 
        at com.remondis.remap.InvocationSensor.<init>(InvocationSensor.java:30) 
        at com.remondis.remap.MappingConfiguration.getPropertyFromFieldSelector(MappingConfiguration.java:538) 
        at com.remondis.remap.MappingConfiguration.reassign(MappingConfiguration.java:228) 
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:27) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96) 
        at android.app.Activity.performCreate(Activity.java:7802) 
        at android.app.Activity.performCreate(Activity.java:7791) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

This is my mapper:

1. readToCreate = Mapping.from(UsuarioProfile_readDTO.class)
2.                 .to(UsuarioProfile_createDTO.class)
3.                 .useMapper(docTypeMapper.fromDocType)
4.                 .reassign(UsuarioProfile_readDTO::getDocType)
5.                     .to(UsuarioProfile_createDTO::getDocTypeValue)
6.                 .mapper();

The stacktrace signal that the problem ocurrs at UsuarioProfileMapper.java:27 (which will be line 4. in the snippet above)

So I try another mapper without the reassign, like this:

1. readToCreate = Mapping.from(UsuarioProfile_readDTO.class)
2.                 .to(UsuarioProfile_createDTO.class)
3.                 .useMapper(docTypeMapper.fromDocType)
4.                 .mapper();

And this time the failure was another one, with this other stacktrace:

2020-10-07 12:09:29.332 8241-8241/ar.com.siid.telemetricprivate.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ar.com.siid.telemetricprivate.debug, PID: 8241
    java.lang.NoClassDefFoundError: Failed resolution of: Ljava/beans/Introspector;
        at com.remondis.remap.Properties.getProperties(Properties.java:114)
        at com.remondis.remap.MappingConfiguration.getUnmappedProperties(MappingConfiguration.java:483)
        at com.remondis.remap.MappingConfiguration.getUnmappedDestinationProperties(MappingConfiguration.java:465)
        at com.remondis.remap.MappingConfiguration.addStrictMapping(MappingConfiguration.java:405)
        at com.remondis.remap.MappingConfiguration.mapper(MappingConfiguration.java:361)
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:29)
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42)
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96)
        at android.app.Activity.performCreate(Activity.java:7802)
        at android.app.Activity.performCreate(Activity.java:7791)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "java.beans.Introspector" on path: DexPathList[[zip file "/data/app/ar.com.siid.telemetricprivate.debug-KcUN_8ygX8Gi2cK-Y3A4bw==/base.apk"],nativeLibraryDirectories=[/data/app/ar.com.siid.telemetricprivate.debug-KcUN_8ygX8Gi2cK-Y3A4bw==/lib/x86, /data/app/ar.com.siid.telemetricprivate.debug-KcUN_8ygX8Gi2cK-Y3A4bw==/base.apk!/lib/x86, /system/lib, /system/product/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at com.remondis.remap.Properties.getProperties(Properties.java:114) 
        at com.remondis.remap.MappingConfiguration.getUnmappedProperties(MappingConfiguration.java:483) 
        at com.remondis.remap.MappingConfiguration.getUnmappedDestinationProperties(MappingConfiguration.java:465) 
        at com.remondis.remap.MappingConfiguration.addStrictMapping(MappingConfiguration.java:405) 
        at com.remondis.remap.MappingConfiguration.mapper(MappingConfiguration.java:361) 
        at ar.com.siid.telemetricprivate.converter.UsuarioProfileMapper.<init>(UsuarioProfileMapper.java:29) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoPresenter.<init>(PersonalInfoPresenter.java:42) 
        at ar.com.siid.telemetricprivate.feature.profile.personalinfo.PersonalInfoActivity.onCreate(PersonalInfoActivity.java:96) 
        at android.app.Activity.performCreate(Activity.java:7802) 
        at android.app.Activity.performCreate(Activity.java:7791) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1299) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

This time the error is at line 4 of the second snippet.

If you need me to perform more test I'll be glad to help.

Thank you very much!

from remap.

sebasira avatar sebasira commented on May 28, 2024

I'm sorry I do not know much about proxies and ClassLoader but after searching for:

create dynamic proxy classes under android

I've found this from the Official Android Developer Docs.

I hope you find it useful!

from remap.

sebasira avatar sebasira commented on May 28, 2024

Hi! I'm sorry to bother you again. Did you have a chance to look into this?

If I could assist you in any way let me know

Thank you!

from remap.

schuettec avatar schuettec commented on May 28, 2024

Hi, I did a little research. I think it's not an easy task to make ReMap compatible on Android. The problem is the cglib dependency and the runtime byte code generation.
I did a little experimental work on this, but another problem is, that I cannot test the results, since I cannot test & check ReMap running in an Android environment in the build pipeline.

I'm sorry - I can't get you a quick solution.

Would you like to provide an PR? :)

from remap.

sebasira avatar sebasira commented on May 28, 2024

Hi! Thank you for your time.

I've been doing some research since your answer and indeed find that the issue is related to the Dalvik VM used by Android.

The problem is that Android does not have full java.beans package and that's why the ClassNotFoundException is thrown.

Looking into it, the alternatives are:

1- Use openbeans to replace java.beans dependencies
2- Use ByteBuddy

I think the simpler one would be 1

I've make a test an make it work in Android. I'll provide a PR

from remap.

sebasira avatar sebasira commented on May 28, 2024

Just to keep posted anyone looking into this, after the successful test (in the previous PR) I've notice that the problem is more complex than it seems and it's not only about the java.beans package but also some dependencies from CGLIB as @schuettec pointed out.

I've create a more complex test and it was failing. And as said before is due to Android using DexClassLoader (Dalvivk VM) and no the JVM.

So my fork is not Android-compatible.

from remap.

schuettec avatar schuettec commented on May 28, 2024

Hi, I'm sorry to hear that. But there might be another option for you. I stubled upon a project "CGLIB For Android". It provides the class Enhancer which is the only thing ReMap depends on (https://github.com/leo-ouyang/CGLib-for-Android). So I you want to spend further time on this one, you could try to get things working with this version of cglib.

from remap.

sebasira avatar sebasira commented on May 28, 2024

Thanks I'll try it out...

I also found out that Android does not have the full javax package, so there's no Transform (from package javax.xml. crypto.dsig.Transform)

I seems more complex than what I initially thought!

from remap.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.