native-build-tools icon indicating copy to clipboard operation
native-build-tools copied to clipboard

nativeCompile results always in Error: Main entry point class 'com.xxx.Application' not found.

Open matus-gazo opened this issue 4 years ago • 11 comments

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')
        }
    }
}

matus-gazo avatar Feb 21 '22 14:02 matus-gazo

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.`

davecramer avatar May 18 '22 15:05 davecramer

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 avatar May 18 '22 16:05 melix

@melix thx, that worked!

davecramer avatar May 18 '22 16:05 davecramer

@matus-gazo Would you mind testing with the latest release (0.9.12)?

lazar-mitrovic avatar Jun 30 '22 15:06 lazar-mitrovic

@matus-gazo Would you mind testing with the latest release (0.9.12)?

Unfortunately still the same error...

matus-gazo avatar Jul 11 '22 12:07 matus-gazo

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.

lazar-mitrovic avatar Aug 16 '22 13:08 lazar-mitrovic

  • ~~I know this issue is tagged with gradle-plugin, but I also see this issue with maven-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.

linghengqian avatar Sep 24 '22 07:09 linghengqian

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'
]

dagnelies avatar Feb 22 '23 11:02 dagnelies

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'])
        }
    }
}

matus-gazo avatar Mar 31 '23 11:03 matus-gazo

I have a similar problem, my project is open-source and available here if any of the maintainers want to try and reproduce.

gotson avatar Jul 14 '23 07:07 gotson