nativeCompile results always in Error: Main entry point class 'com.xxx.Application' not found.
Hello all,
I am running into a weird problem with the plugin (v0.9.10) where it always ends up with an error about not able to find the Main entry point class. Funnily enough I am able to do a build with Paketo/ gradle bootBuildImage just fine and I also do see the *.jar with class in the -imagecp classpath and also in the generated args file, so not sure what's wrong.
Any ideas please? Much appreciated, thank you.
========================================================================================================================
GraalVM Native Image: Generating 'service-mock'...
========================================================================================================================
[1/7] Initializing... (15.3s @ 1.79GB)
Error: Main entry point class 'com.xxx.Application' not found.
com.oracle.svm.core.util.UserError$UserException: Main entry point class 'com.xxx.Application' not found.
at com.oracle.svm.core.util.UserError.abort(UserError.java:73)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:367)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:587)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:126)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:617)
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1770)
at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1477)
at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1438)
at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1425)
build.gradle file:
bootBuildImage {
builder = "paketobuildpacks/builder:tiny"
environment = [
"BP_NATIVE_IMAGE": "true",
"BP_JVM_VERSION" : "17.*"
]
}
springAot {
mode = AotMode.NATIVE
debugVerify = false
removeXmlSupport = true
removeJmxSupport = true
removeYamlSupport = true
verify = true
debugVerify = true
mainClass = 'com.xxx.Application'
applicationClass = 'com.xxx.Application'
}
graalvmNative {
binaries {
main {
verbose = true
fallback = true
buildArgs.add('-H:+ReportExceptionStackTraces')
}
}
}
I have the same issue, even though I can copy the exact arguments and run it manually and it works
$JAVA_HOME/bin/native-image -cp /Users/davecra/projects/jdbcbench/build/libs/nativecompile-classpath-0.1-SNAPSHOT.jar --no-fallback --verbose -H:Path=/Users/davecra/projects/jdbcbench/build/native/nativeCompile -H:Name=jdbcbench -H:ConfigurationFileDirectories=/Users/davecra/projects/jdbcbench/build/native/generated/generateResourcesConfigFile -H:Class=rocks.postgres.JDBCBench -H:+ReportExceptionStackTraces
However gradlew nativeCompile' fails with Error: Main entry point class '@/var/folders/nx/ghf_9dtj429390tmrybbf7w80000gr/T/native-image16394532788938476208args' not found.`
Which version of GraalVM are you using? The error message indicates that you are using the @argfile which is only supported since GraalVM 21.3. If you are on an older release, you can disable argument files using:
graalvmNative {
useArgFile = false
}
@melix thx, that worked!
@matus-gazo Would you mind testing with the latest release (0.9.12)?
@matus-gazo Would you mind testing with the latest release (0.9.12)?
Unfortunately still the same error...
Hey @matus-gazo,
Are you able to share some kind of a reproducer (or at least verbose level log)?
Without seeing the native-image invocation I doubt that anyone would be able to debug this issue.
-
~~I know this issue is tagged with
gradle-plugin, but I also see this issue withmaven-plugin. I built https://github.com/linghengqian/test-graalvm-nbt as a test, the relevant log is output via Github Actions, refer to https://github.com/linghengqian/test-graalvm-nbt/actions/runs/3117484101/jobs/5056174887 .~~ -
~~I hope the strange shape of this repository won't bother too many people, because I took it out and tested it from https://github.com/apache/shardingsphere/pull/21109.~~
Error: Main entry point class 'org.apache.shardingsphere.proxy.Bootstrap' neither found on the classpath nor on the modulepath.
classpath: '/home/runner/work/shardingsphere/shardingsphere'
modulepath: '/opt/hostedtoolcache/graalvm-ce-java17-linux/22.2.0/x64/graalvm-ce-java17-22.2.0/lib/svm/library-support.jar'
com.oracle.svm.core.util.UserError$UserException: Main entry point class 'org.apache.shardingsphere.proxy.Bootstrap' neither found on the classpath nor on the modulepath.
classpath: '/home/runner/work/shardingsphere/shardingsphere'
modulepath: '/opt/hostedtoolcache/graalvm-ce-java17-linux/22.2.0/x64/graalvm-ce-java17-22.2.0/lib/svm/library-support.jar'
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.UserError.abort(UserError.java:72)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:348)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:585)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
Error: Image build request failed with exit status 1
com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1
at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1716)
at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1413)
at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1374)
at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1361)
- update in 2022.09.27: I'm very sorry to affect this issue, I have found that I misunderstood the meaning of classpath, I have fixed this problem in the original PR.
Same error here.
Error: Main entry point class 'com.elo.datafill.DatafillApplication' neither found on the classpath nor on the modulepath.
classpath: 'C:\elo-workspace\datafill\target\datafill-0.0.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.0.2\spring-boot-starter-tomcat-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-context\6.0.4\spring-context-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-core\6.0.4\spring-core-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-devtools\3.0.2\spring-boot-devtools-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\ch\qos\logback\logback-core\1.4.5\logback-core-1.4.5.jar;C:\Users\Dagnelies\.m2\repository\com\squareup\okio\okio-jvm\3.0.0\okio-jvm-3.0.0.jar;C:\Users\Dagnelies\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.14.1\jackson-annotations-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-beans\6.0.4\spring-beans-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\io\micrometer\micrometer-observation\1.10.3\micrometer-observation-1.10.3.jar;C:\Users\Dagnelies\.m2\repository\io\micrometer\micrometer-commons\1.10.3\micrometer-commons-1.10.3.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.14.1\jackson-module-parameter-names-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-web\6.0.4\spring-web-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-webmvc\6.0.4\spring-webmvc-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\json\json\20220924\json-20220924.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.22\kotlin-stdlib-jdk8-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.0.2\spring-boot-starter-web-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\ch\qos\logback\logback-classic\1.4.5\logback-classic-1.4.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-jcl\6.0.4\spring-jcl-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.0.2\spring-boot-autoconfigure-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.0.2\spring-boot-starter-json-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\com\google\code\gson\gson\2.9.1\gson-2.9.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.0.2\spring-boot-starter-logging-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-aop\6.0.4\spring-aop-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.14.1\jackson-datatype-jsr310-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.14.1\jackson-core-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\apache\logging\log4j\log4j-api\2.19.0\log4j-api-2.19.0.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.5\tomcat-embed-websocket-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-expression\6.0.4\spring-expression-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.22\kotlin-stdlib-jdk7-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\com\auth0\java-jwt\4.2.2\java-jwt-4.2.2.jar;C:\Users\Dagnelies\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.19.0\log4j-to-slf4j-2.19.0.jar;C:\Users\Dagnelies\.m2\repository\com\meilisearch\sdk\meilisearch-java\0.9.0\meilisearch-java-0.9.0.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.5\tomcat-embed-el-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter\3.0.2\spring-boot-starter-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.22\kotlin-stdlib-common-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\slf4j\jul-to-slf4j\2.0.6\jul-to-slf4j-2.0.6.jar;C:\Users\Dagnelies\.m2\repository\org\yaml\snakeyaml\1.33\snakeyaml-1.33.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.14.1\jackson-databind-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\com\squareup\okhttp3\okhttp\4.10.0\okhttp-4.10.0.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.14.1\jackson-datatype-jdk8-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot\3.0.2\spring-boot-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\slf4j\slf4j-api\2.0.6\slf4j-api-2.0.6.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.5\tomcat-embed-core-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.7.22\kotlin-stdlib-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar'
modulepath: 'C:\tools\graalvm-ce-java17-22.3.1\lib\svm\library-support.jar'
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>compile-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<mainClass>com.elo.datafill.DatafillApplication</mainClass>
<skipNativeTests>true</skipNativeTests>
<verbose>true</verbose>
</configuration>
</plugin>
More logs:
[INFO] Executing: C:\tools\graalvm-ce-java17-22.3.1\bin\native-image.cmd @target\tmp\native-image-14460990181459952358.args
Apply jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar!/META-INF/native-image/org.springframework/spring-core/native-image.properties
Apply jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar!/META-INF/native-image/org.springframework/spring-web/native-image.properties
Apply jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.5/tomcat-embed-websocket-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-websocket/native-image.properties
Apply jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.5/tomcat-embed-el-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/native-image.properties
Apply jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.5/tomcat-embed-core-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/native-image.properties
Apply jar:file:///C:/tools/graalvm-ce-java17-22.3.1/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties
Apply jar:file:///C:/tools/graalvm-ce-java17-22.3.1/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/polyglot/native-image.properties
Executing [
'C:\tools\graalvm-ce-java17-22.3.1\bin\java.exe' \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.access.foreign=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder,org.graalvm.truffle \
--add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.misc=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=java.base/jdk.internal.module=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.platform=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.net=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder \
--add-exports=java.base/sun.util=org.graalvm.nativeimage.builder \
--add-exports=java.desktop/sun.java2d.pipe=org.graalvm.nativeimage.builder \
--add-exports=java.desktop/sun.java2d=org.graalvm.nativeimage.builder \
--add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder \
--add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.riscv64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.riscv64=jdk.internal.vm.compiler \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=org.graalvm.nativeimage.builder \
--add-exports=jdk.jfr/jdk.jfr.internal=org.graalvm.nativeimage.builder \
--add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx14g \
-Djava.awt.headless=true \
-Dorg.graalvm.version=22.3.1 \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
--add-modules=ALL-DEFAULT \
--module-path \
'C:\tools\graalvm-ce-java17-22.3.1\lib\truffle\truffle-api.jar;C:\tools\graalvm-ce-java17-22.3.1\lib\svm\builder\native-image-base.jar;C:\tools\graalvm-ce-java17-22.3.1\lib\svm\builder\objectfile.jar;C:\tools\graalvm-ce-java17-22.3.1\lib\svm\builder\pointsto.jar;C:\tools\graalvm-ce-java17-22.3.1\lib\svm\builder\svm.jar' \
--module \
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner \
-imagecp \
'C:\elo-workspace\datafill\target\datafill-0.0.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.0.2\spring-boot-starter-tomcat-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-context\6.0.4\spring-context-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-core\6.0.4\spring-core-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-devtools\3.0.2\spring-boot-devtools-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\ch\qos\logback\logback-core\1.4.5\logback-core-1.4.5.jar;C:\Users\Dagnelies\.m2\repository\com\squareup\okio\okio-jvm\3.0.0\okio-jvm-3.0.0.jar;C:\Users\Dagnelies\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.14.1\jackson-annotations-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-beans\6.0.4\spring-beans-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\io\micrometer\micrometer-observation\1.10.3\micrometer-observation-1.10.3.jar;C:\Users\Dagnelies\.m2\repository\io\micrometer\micrometer-commons\1.10.3\micrometer-commons-1.10.3.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.14.1\jackson-module-parameter-names-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-web\6.0.4\spring-web-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-webmvc\6.0.4\spring-webmvc-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\json\json\20220924\json-20220924.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk8\1.7.22\kotlin-stdlib-jdk8-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.0.2\spring-boot-starter-web-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\ch\qos\logback\logback-classic\1.4.5\logback-classic-1.4.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-jcl\6.0.4\spring-jcl-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.0.2\spring-boot-autoconfigure-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.0.2\spring-boot-starter-json-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\com\google\code\gson\gson\2.9.1\gson-2.9.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.0.2\spring-boot-starter-logging-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-aop\6.0.4\spring-aop-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.14.1\jackson-datatype-jsr310-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.14.1\jackson-core-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\apache\logging\log4j\log4j-api\2.19.0\log4j-api-2.19.0.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.5\tomcat-embed-websocket-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\spring-expression\6.0.4\spring-expression-6.0.4.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-jdk7\1.7.22\kotlin-stdlib-jdk7-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\com\auth0\java-jwt\4.2.2\java-jwt-4.2.2.jar;C:\Users\Dagnelies\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.19.0\log4j-to-slf4j-2.19.0.jar;C:\Users\Dagnelies\.m2\repository\com\meilisearch\sdk\meilisearch-java\0.9.0\meilisearch-java-0.9.0.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.5\tomcat-embed-el-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot-starter\3.0.2\spring-boot-starter-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.7.22\kotlin-stdlib-common-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\slf4j\jul-to-slf4j\2.0.6\jul-to-slf4j-2.0.6.jar;C:\Users\Dagnelies\.m2\repository\org\yaml\snakeyaml\1.33\snakeyaml-1.33.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.14.1\jackson-databind-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\com\squareup\okhttp3\okhttp\4.10.0\okhttp-4.10.0.jar;C:\Users\Dagnelies\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.14.1\jackson-datatype-jdk8-2.14.1.jar;C:\Users\Dagnelies\.m2\repository\org\springframework\boot\spring-boot\3.0.2\spring-boot-3.0.2.jar;C:\Users\Dagnelies\.m2\repository\org\slf4j\slf4j-api\2.0.6\slf4j-api-2.0.6.jar;C:\Users\Dagnelies\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.5\tomcat-embed-core-10.1.5.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.7.22\kotlin-stdlib-1.7.22.jar;C:\Users\Dagnelies\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar' \
-imagemp \
'C:\tools\graalvm-ce-java17-22.3.1\lib\svm\library-support.jar' \
'-H:CLibraryPath=C:\tools\graalvm-ce-java17-22.3.1\lib\svm\clibraries\windows-amd64' \
'-H:Path=C:\elo-workspace\datafill' \
'-H:ClassInitialization@jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar!/META-INF/native-image/org.springframework/spring-core/native-image.properties=org.springframework.aot.nativex.feature.ThrowawayClassLoader:build_time' \
'-H:Features@jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-core/6.0.4/spring-core-6.0.4.jar!/META-INF/native-image/org.springframework/spring-core/native-image.properties=org.springframework.aot.nativex.feature.PreComputeFieldFeature' \
'-H:EnableURLProtocols@jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar!/META-INF/native-image/org.springframework/spring-web/native-image.properties=http' \
'-H:EnableURLProtocols@jar:file:///C:/Users/Dagnelies/.m2/repository/org/springframework/spring-web/6.0.4/spring-web-6.0.4.jar!/META-INF/native-image/org.springframework/spring-web/native-image.properties=https' \
'-H:ReflectionConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.5/tomcat-embed-websocket-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-websocket/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-websocket/tomcat-reflection.json' \
'-H:ResourceConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.5/tomcat-embed-websocket-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-websocket/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-websocket/tomcat-resource.json' \
'-H:ReflectionConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.5/tomcat-embed-el-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/tomcat-reflection.json' \
'-H:ResourceConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.5/tomcat-embed-el-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-el/tomcat-resource.json' \
'-H:ReflectionConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.5/tomcat-embed-core-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/tomcat-reflection.json' \
'-H:ResourceConfigurationResources@jar:file:///C:/Users/Dagnelies/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.5/tomcat-embed-core-10.1.5.jar!/META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/native-image.properties=META-INF/native-image/org.apache.tomcat.embed/tomcat-embed-core/tomcat-resource.json' \
'-H:FallbackThreshold@argfile:target\tmp\native-image-14460990181459952358.args=0' \
'-H:Path@argfile:target\tmp\native-image-14460990181459952358.args=C:\\elo-workspace\\datafill\\target' \
'-H:Name@argfile:target\tmp\native-image-14460990181459952358.args=datafill' \
'-H:Class@argfile:target\tmp\native-image-14460990181459952358.args=com.elo.datafill.DatafillApplication' \
'-H:Features@jar:file:///C:/tools/graalvm-ce-java17-22.3.1/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/thirdparty/native-image.properties=com.oracle.svm.thirdparty.gson.GsonFeature' \
'-H:Features@jar:file:///C:/tools/graalvm-ce-java17-22.3.1/lib/svm/library-support.jar!/META-INF/native-image/com.oracle.svm/polyglot/native-image.properties=com.oracle.svm.polyglot.groovy.GroovyIndyInterfaceFeature,com.oracle.svm.polyglot.scala.ScalaFeature'
]
Hi, I did not manage to make this work on Spring Boot 2x. With ugprade to Spring Boot 3 and 'org.graalvm.buildtools.native' version '0.9.20' AND some manual tweaking of jar/bootJar tasks it finally works now. Without this manual config it would either not compile and/or run for me:
jar {
enabled = true
archiveClassifier = 'plain'
from file("$buildDir/generated/aotClasses")
from sourceSets.aot.output
from collectReachabilityMetadata
}
bootJar {
enabled = true
from file("$buildDir/generated/aotClasses")
from sourceSets.main.output
from sourceSets.aot.output
from collectReachabilityMetadata
duplicatesStrategy = DuplicatesStrategy.WARN
}
I think ideally the gradle plugin should work out of the box...
For reference, this is my graalVmNative section:
graalvmNative {
toolchainDetection = false
testSupport = false
agent {
enabled = false
}
metadataRepository {
enabled = true
}
binaries {
main {
mainClass = 'com.blazemeter.mock.ServiceMockApplication'
sharedLibrary = false
debug = false // Determines if debug info should be generated, defaults to false (alternatively add --debug-native to the CLI)
verbose = true // Add verbose output, defaults to false
fallback = false // Sets the fallback mode of native-image, defaults to false
quickBuild = false // Determines if image is being built in quick build mode (alternatively use GRAALVM_QUICK_BUILD environment variable, or add --native-quick-build to the CLI)
richOutput = true // Determines if native-image building should be done with rich output
buildArgs.addAll(['--install-exit-handlers', '--enable-all-security-services', '--enable-http', '--enable-https'])
}
}
}
I have a similar problem, my project is open-source and available here if any of the maintainers want to try and reproduce.