Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.1
-
None
Description
I'm shading several third party libraries into a single JAR. In the context of this issue, there are two important libraries:
1. com.nothome:javaxdelta:2.0.1 - this library is in "at.spardat.xma.xdelta" package.
2. ch.qos.logback:logback-classic:1.0.11 - in this library, in class ch.qos.logback.classic.spi.StackTraceElementProxy, there is a method to convert stack trace elements into strings:
public String getSTEAsString() { if (steAsString == null) { steAsString = "at " + ste.toString(); } return steAsString; }
I use "org.myorgname.appname.shaded" package for shading.
During shading, the constant "at " is replaced with "org.myorgname.appname.shaded.at" – shade plugin thinks that the "at" in the beginning of that string is a package name and shades it.
This results in an unfortunate side-effect: all logged stack traces now look like this:
Caused by: java.util.zip.ZipException: error in opening zip file org.myorgname.appname.shaded.at java.util.zip.ZipFile.open(Native Method) ~[na:1.6.0_19] org.myorgname.appname.shaded.at java.util.zip.ZipFile.<init>(ZipFile.java:114) ~[na:1.6.0_19] org.myorgname.appname.shaded.at java.util.zip.ZipFile.<init>(ZipFile.java:131) ~[na:1.6.0_19]
Possible fixes:
- instead of just checking the first part of the package (at), check for the full package (at.spardat.xma.xdelta).
- allow to configure shade plugin to ignore certain string constants in certain classes (this would solve also some other issues we have with shade plugin being too eager).
- both of the above.
Attachments
Issue Links
- breaks
-
FLINK-13044 Shading of AWS SDK in flink-s3-fs-hadoop results in ClassNotFoundExceptions
- Closed
- causes
-
SLING-8092 Relocation in Content Extension too bold
- Resolved