JNI error: Invalid signature file digest for Manifest main attributes

Description

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.

CSP Request Details

None

CSP Rejection Details

None

Potential Workaround

None

Checklist

hide

Activity

Show:

Julian Ladisch last week

This is a priority P1 issue because the module container doesn’t start at all.

This has been fixed in https://github.com/folio-org/mod-circulation/pull/1565

Anne Ekblad March 18, 2025 at 1:26 PM

Hi, . I’m following up on Khalilah’s question with a request for context.

Khalilah Gambrell March 14, 2025 at 4:45 PM

Hey - why is this issue a P1?

Done

Details

Assignee

Reporter

Priority

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
TestRail: Cases
TestRail: Runs

Flag notifications