spring native compile ,can't find main class after maven native:compile -Pnative

75 Views Asked by At
andy@AndydeMacBook-Pro wepoker-hall % ./target/wepoker 
Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.6)

12:30:43.973 [main] ERROR org.springframework.boot.SpringApplication -- Application run failed
java.lang.IllegalArgumentException: Could not find class [com.hm.wepoker.HallMainStarter__ApplicationContextInitializer]
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:341)
    at org.springframework.context.aot.AotApplicationContextInitializer.instantiateInitializer(AotApplicationContextInitializer.java:80)
    at org.springframework.context.aot.AotApplicationContextInitializer.initialize(AotApplicationContextInitializer.java:71)
    at org.springframework.context.aot.AotApplicationContextInitializer.lambda$forInitializerClasses$0(AotApplicationContextInitializer.java:61)
    at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:611)
    at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:391)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150)
    at com.hm.wepoker.commons.config.BaseMainStarter.springApplicationRun(BaseMainStarter.java:54)
    at com.hm.wepoker.HallMainStarter.main(HallMainStarter.java:29)
Caused by: java.lang.ClassNotFoundException: com.hm.wepoker.HallMainStarter__ApplicationContextInitializer
    at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:123)
    at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.ClassForNameSupport.forName(ClassForNameSupport.java:87)
    at [email protected]/java.lang.Class.forName(DynamicHub.java:1322)
    at [email protected]/java.lang.Class.forName(DynamicHub.java:1311)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:291)
    at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:331)
    ... 9 common frames omitted

when i try to package a native program , use spring-native-plugin method , the excetion occured when i run ./target/***

maven config like below

<plugin>
    <groupId>org.graalvm.buildtools</groupId>
    <artifactId>native-maven-plugin</artifactId>
    <version>0.9.28</version>
    <configuration>

        <buildArgs>
            --initialize-at-build-time=org.springframework.util.unit.DataSize
            --initialize-at-build-time=org.slf4j.MDC
            --initialize-at-build-time=ch.qos.logback.classic.Level
            --initialize-at-build-time=ch.qos.logback.classic.Logger
            --initialize-at-build-time=ch.qos.logback.core.util.StatusPrinter
            --initialize-at-build-time=ch.qos.logback.core.status.StatusBase
            --initialize-at-build-time=ch.qos.logback.core.status.InfoStatus
            --initialize-at-build-time=ch.qos.logback.core.spi.AppenderAttachablelmpl
            --initialize-at-build-time=org.slf4j.LoggerFactory
            --initialize-at-build-time=ch.qos.logback.core.util.Loader
            --initialize-at-build-time=org.slf4j.impl.StaticLoggerBinder
            --initialize-at-build-time=ch.qos.logback.classic.spi.ThrowableProxy
            --initialize-at-build-time=ch.qos.logback.core.CoreConstants
            --report-unsupported-elements-at-runtime
            --allow-incomplete-classpath
            -H:+ReportExceptionStackTraces
        </buildArgs>
      <imageName>wepoker</imageName>

    </configuration>
</plugin>

when i search the solution for the exception , some answers said ,the project need spring-aot compile first ,then the native packge will be good running . but when i try to call 'mvn clean package -Pnative' ,it will appear a new exception like below

12:43:31,159 |-INFO in org.springframework.boot.logging.logback.SpringBootJoranConfigurator@25ddbbbb - Registering current configuration as safe fallback point
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.6)
0103 12:43:31.188 1 HallMainStarter51: Starting HallMainStarter using Java 17.0.9 with PID 9012 (/Users/andy/hall/wepoker-hall/target/classes started by andy in /Users/andy/hall/wepoker-hall)
0103 12:43:31.188 1 HallMainStarter644: The following 1 profile is active: "dev"
Exception in thread "main" org.springframework.boot.context.properties.bind.MissingParametersCompilerArgumentException: Constructor binding in a native image requires compilation with -parameters but the following classes were compiled without it:
    redis.clients.jedis.HostAndPort
    at org.springframework.boot.context.properties.bind.BindableRuntimeHintsRegistrar.registerHints(BindableRuntimeHintsRegistrar.java:100)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBeanFactoryInitializationAotProcessor$ConfigurationPropertiesReflectionHintsContribution.applyTo(ConfigurationPropertiesBeanFactoryInitializationAotProcessor.java:110)
    at org.springframework.context.aot.BeanFactoryInitializationAotContributions.applyTo(BeanFactoryInitializationAotContributions.java:78)
    at org.springframework.context.aot.ApplicationContextAotGenerator.lambda$processAheadOfTime$0(ApplicationContextAotGenerator.java:58)
    at org.springframework.context.aot.ApplicationContextAotGenerator.withCglibClassHandler(ApplicationContextAotGenerator.java:67)
    at org.springframework.context.aot.ApplicationContextAotGenerator.processAheadOfTime(ApplicationContextAotGenerator.java:53)
    at org.springframework.context.aot.ContextAotProcessor.performAotProcessing(ContextAotProcessor.java:106)
    at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:84)
    at org.springframework.context.aot.ContextAotProcessor.doProcess(ContextAotProcessor.java:49)
    at org.springframework.context.aot.AbstractAotProcessor.process(AbstractAotProcessor.java:82)
    at org.springframework.boot.SpringApplicationAotProcessor.main(SpringApplicationAotProcessor.java:80)
Disconnected from the target VM, address: '127.0.0.1:57301', transport: 'socket'
0

There are 0 best solutions below