Done
Details
Details
Assignee
Julian Ladisch
Julian LadischReporter
Julian Ladisch
Julian LadischPriority
Development Team
Vega
RCA Group
Missing integration/unit test
TestRail: Cases
Open TestRail: Cases
TestRail: Runs
Open TestRail: Runs
Created March 11, 2025 at 9:12 PM
Updated last week
Resolved last week
Docker image immediately stops with an exception when trying to start.
How to reproduce:
docker run docker.ci.folio.org/folioci/mod-circulation:24.4.0-SNAPSHOT.1295
exec java -XX:+ExitOnOutOfMemoryError -cp . -jar /usr/verticles/mod-circulation.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes at java.base/sun.security.util.SignatureFileVerifier.processImpl(Unknown Source) at java.base/sun.security.util.SignatureFileVerifier.process(Unknown Source) at java.base/java.util.jar.JarVerifier.processEntry(Unknown Source) at java.base/java.util.jar.JarVerifier.update(Unknown Source) at java.base/java.util.jar.JarFile.initializeVerifier(Unknown Source) at java.base/java.util.jar.JarFile.ensureInitialization(Unknown Source) at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(Unknown Source) at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source) at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Unknown Source) at java.base/java.lang.Class.forName(Unknown Source) at java.base/sun.launcher.LauncherHelper.loadMainClass(Unknown Source) at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Cause:
When building a shaded uber-jar the manifest signature files are no longer correct.
Solution: Exclude them in the
maven-shade-plugin
configuration. See example at https://docs.drools.org/latest/drools-docs/drools/KIE/index.html#_buildingwithmavenandrunningdroolsinauberjarorfatjar :<configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> </configuration>
After that is fixed we get this exception:
Drools build errors: Error Messages: Message [id=1, kieBase=defaultKieBase, level=ERROR, path=null, line=-1, column=0 text=Unable to wire compiled classes, probably related to compilation failures:Unable to wire up JavaDialect] --- Warning Messages: --- Info Messages: java.lang.IllegalArgumentException: Drools build errors: Error Messages: Message [id=1, kieBase=defaultKieBase, level=ERROR, path=null, line=-1, column=0 text=Unable to wire compiled classes, probably related to compilation failures:Unable to wire up JavaDialect] --- Warning Messages: --- Info Messages: at org.folio.circulation.rules.Drools.<init>(Drools.java:60) at org.folio.circulation.rules.cache.CirculationRulesCache.buildRules(CirculationRulesCache.java:72) at org.folio.circulation.rules.cache.CirculationRulesCache.lambda$reloadRules$2(CirculationRulesCache.java:51) at org.folio.circulation.support.results.Result.next(Result.java:293) at org.folio.circulation.rules.cache.CirculationRulesCache.lambda$reloadRules$3(CirculationRulesCache.java:51)
Organisational cause:
mod-circulation doesn’t have a smoke test for the generated Docker image and the uber-jar file in maven-failsafe-plugin.