Comments (10)
I've also found this, that could help to identify the problem.
from remap.
from remap.
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.
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.
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.
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.
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.
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.
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.
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)
- Property path needs update to 0.1.0 HOT 1
- Property path support for set would be helpful
- Improve exception messages HOT 5
- Mapping is not applied for Set properties HOT 5
- Exception when creating mapper for generic type HOT 4
- Support for hierarchy HOT 3
- Map-Optional is missing for collections HOT 1
- Hamcrest not in test scope HOT 1
- Feature request: Allow chained/fluent setters HOT 9
- Is it possible to update an existing object instead of creating a new one? HOT 4
- custom mapping HOT 1
- Support mapping contributors? HOT 1
- An illegal reflective access operation has occurred HOT 4
- Mapping collection with specific implementation HOT 6
- A read-only property causes misleading exception when omitted as destination property
- Reassign property of Type Map fails with an EmptyStack exception HOT 4
- Java 17 compatibility HOT 1
- Feature: Default setting for mapping of null values wanted
- Upgrade to Property-Path version 0.2.0.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from remap.