Originally posted on 2022-09-29
I was working on building some native executables today with GraalVM’s native image and I started running into a problem with a misleading error message. The message I got was:
Error: Main entry point class 'com.timmattison.AmazingMainClass' neither found on the classpath nor on the modulepath.
Naturally I popped open the nativecompile-classpath.jar
and saw the class was there. After some research I found out the following:
- Paho 1.2.5 includes
META-INF/ECLIPSE_.RSA
andMETA-INF/ECLIPSE_.SF
files - Stripping down the project to a Hello World project that just includes Paho 1.2.5 yields an invalid signature error
The top level fatal error I got from the Hello World project was:
Fatal error: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
To fix this with the Gradle Kotlin DSL I had to add the following code:
tasks.nativeCompileClasspathJar {
exclude("META-INF/MANIFEST.MF", "META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA")
}
Now it builds and runs perfectly. Hopefully this’ll save you some debugging time.