简体   繁体   中英

Jackson library post-obfuscation using Proguard

After a while trying some solutions here I'm still facing the problem of getting NullPointerException, apparently when using Jackson library, after trying to shrink my jar file using Proguard.

This is what I had defined to my Proguard config file:

-injars <my_raw_filejar>.jar
-outjars    <shrunk_filejar>.jar
-libraryjars    <JAVA_HOME>/lib/rt.jar

-keep public class packagename.MainClass{
    public static void main(java.lang.String[]);
}
-keepnames class org.codehaus.jackson.** { *; }
-keepattributes *Annotation*
-keepattributes EnclosingMethod
-keepattributes Signature
-dontobfuscate
-optimizations !code/allocation/variable
-dontoptimize
-dontwarn
-ignorewarnings

But I'm getting the error below, once I run my generated shrunk jar:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:535)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:452)
    at org.apache.beam.sdk.options.PipelineOptionsFactory.<clinit>(PipelineOptionsFactory.java:450)
    at skry.tech.terbium.pipelines.TerbiumFeedBigTablePipeline.main(TerbiumFeedBigTablePipeline.java:30)
Caused by: java.lang.NullPointerException
    at com.fasterxml.jackson.databind.cfg.MapperConfig.collectFeatureDefaults(MapperConfig.java:99)
    at com.fasterxml.jackson.databind.cfg.MapperConfigBase.<clinit>(MapperConfigBase.java:31)
    ... 4 more

Is there any clue of what is happening and how to solve this error?

I had the same problem here.

Since the issue seemed to be based on an Enum being null. I added the following code to my proguard.conf

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM