halo-dev / halo

强大易用的开源建站工具。
https://www.halo.run
GNU General Public License v3.0
34.02k stars 9.71k forks source link

添加GraalVM AOT支持 #3215

Open Songzhizong opened 1 year ago

Songzhizong commented 1 year ago

你当前使用的版本

2.2

描述一下此特性

是否可以添加GraalVM AOT支持?希望Halo能够进一步降低内存占用。

附加信息

No response

ruibaby commented 1 year ago

据我的了解,GraalVM 对反射的支持有限,但目前我们的插件系统使用了反射,不太清楚会有多大的影响,需要实际尝试一下。你如果有兴趣也可以实践一下。

/kind improvement

guqing commented 1 year ago

在有时间的情况下,我们会根据 https://docs.spring.io/spring-boot/docs/3.0.0/reference/html/native-image.html#native-image 做一些尝试,但优先级不高

JohnNiang commented 1 year ago

我尝试过,无法正常运行。

╰─❯ ./gradlew nativeRun
Starting a Gradle Daemon, 1 busy and 1 incompatible and 1 stopped Daemons could not be reused, use --status for details

> Task :compileJava
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/security/authorization/DefaultRuleResolver.java:56: warning: [removal] visitRulesFor(UserDetails,RuleAccumulator) in AuthorizationRuleResolver has been deprecated and marked for removal
    public void visitRulesFor(UserDetails user, RuleAccumulator visitor) {
                ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/security/authorization/DefaultRuleResolver.java:41: warning: [removal] rulesFor(UserDetails) in AuthorizationRuleResolver has been deprecated and marked for removal
    public PolicyRuleList rulesFor(UserDetails user) {
                          ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:47: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
    private final ThemePathPolicy themePathPolicy;
                  ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:47: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
    private final ThemePathPolicy themePathPolicy;
                  ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:47: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
    private final ThemePathPolicy themePathPolicy;
                  ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:47: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
    private final ThemePathPolicy themePathPolicy;
                  ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:47: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
    private final ThemePathPolicy themePathPolicy;
                  ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/core/extension/reconciler/ThemeReconciler.java:59: warning: [removal] ThemePathPolicy in run.halo.app.theme has been deprecated and marked for removal
        themePathPolicy = new ThemePathPolicy(haloProperties.getWorkDir());
                              ^
/home/johnniang/workspaces/halo-dev/halo/src/main/java/run/halo/app/extension/router/ExtensionRouterFunctionFactory.java:57: warning: [removal] ListRequest in run.halo.app.extension.router has been deprecated and marked for removal
                    QueryParamBuildUtil.buildParametersFromType(builder, ListRequest.class);
                                                                         ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
9 warnings

> Task :processAot

    __  __      __
   / / / /___ _/ /___
  / /_/ / __ `/ / __ \
 / __  / /_/ / / /_/ /
/_/ /_/\__,_/_/\____/

Version:
2023-02-03T14:09:39.600+08:00  INFO 3043 --- [           main] run.halo.app.Application                 : Starting Application using Java 17.0.5 with PID 3043 (/home/johnniang/workspaces/halo-dev/halo/build/classes/java/main started by johnniang in /home/johnniang/workspaces/halo-dev/halo)
2023-02-03T14:09:39.606+08:00  INFO 3043 --- [           main] run.halo.app.Application                 : No active profile set, falling back to 1 default profile: "default"
2023-02-03T14:09:40.553+08:00  INFO 3043 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2023-02-03T14:09:40.555+08:00  INFO 3043 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data R2DBC repositories in DEFAULT mode.
2023-02-03T14:09:40.712+08:00  INFO 3043 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 146 ms. Found 1 R2DBC repository interfaces.

> Task :compileAotJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :generateResourcesConfigFile
[native-image-plugin] Resources configuration written into /home/johnniang/workspaces/halo-dev/halo/build/native/generated/generateResourcesConfigFile/resource-config.json

> Task :nativeCompile
[native-image-plugin] GraalVM Toolchain detection is enabled
[native-image-plugin] GraalVM uses toolchain detection. Selected:
[native-image-plugin]    - language version: 17
[native-image-plugin]    - vendor: GraalVM Community
[native-image-plugin]    - runtime version: 17.0.5+8-jvmci-22.3-b08
[native-image-plugin] Native Image executable path: /home/johnniang/.sdkman/candidates/java/22.3.r17-grl/lib/svm/bin/native-image
========================================================================================================================
GraalVM Native Image: Generating 'halo' (executable)...
========================================================================================================================
Warning: Could not resolve com.github.luben.zstd.ZstdCompressCtx for reflection configuration. Reason: java.lang.ClassNotFoundException: com.github.luben.zstd.ZstdCompressCtx.
Warning: Could not resolve io.netty.handler.ssl.OpenSslClientSessionCache for reflection configuration. Reason: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/SSLSessionCache.
Warning: Could not resolve io.netty.handler.ssl.ReferenceCountedOpenSslClientContext$ExtendedTrustManagerVerifyCallback for reflection configuration. Reason: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/CertificateVerifier.
Warning: Could not resolve io.netty.handler.ssl.ReferenceCountedOpenSslServerContext$ExtendedTrustManagerVerifyCallback for reflection configuration. Reason: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/CertificateVerifier.
Warning: Could not resolve io.netty.handler.ssl.ReferenceCountedOpenSslServerContext$OpenSslServerCertificateCallback for reflection configuration. Reason: java.lang.NoClassDefFoundError: io/netty/internal/tcnative/CertificateCallback.
Warning: Could not resolve org.conscrypt.ConscryptEngine for reflection configuration. Reason: java.lang.ClassNotFoundException: org.conscrypt.ConscryptEngine.
Warning: Could not resolve org.conscrypt.ConscryptEngine for reflection configuration. Reason: java.lang.ClassNotFoundException: org.conscrypt.ConscryptEngine.
Warning: Could not resolve org.conscrypt.ConscryptEngine for reflection configuration. Reason: java.lang.ClassNotFoundException: org.conscrypt.ConscryptEngine.
Warning: Method com.zaxxer.hikari.HikariConfig.getScheduledExecutorService() not found.
Warning: Method com.zaxxer.hikari.HikariConfig.isInitializationFailFast() not found.
Warning: Method com.zaxxer.hikari.HikariConfig.isJdbc4ConnectionTest() not found.
Warning: Method com.zaxxer.hikari.HikariConfig.setInitializationFailFast(boolean) not found.
Warning: Method com.zaxxer.hikari.HikariConfig.setJdbc4ConnectionTest(boolean) not found.
Warning: Method com.zaxxer.hikari.HikariConfig.setScheduledExecutorService(ScheduledThreadPoolExecutor) not found.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.Appender; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.Appender.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.config.AppenderControl; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.config.AppenderControl.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.config.AppenderRef; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.config.AppenderRef.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.config.LoggerConfig; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.config.LoggerConfig.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.config.Property; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.config.Property.
Warning: Could not resolve [Lorg.apache.logging.log4j.core.pattern.PatternFormatter; for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.pattern.PatternFormatter.
Warning: Could not resolve jakarta.enterprise.inject.spi.BeanManager for reflection configuration. Reason: java.lang.ClassNotFoundException: jakarta.enterprise.inject.spi.BeanManager.
Warning: Could not resolve jakarta.servlet.Servlet for reflection configuration. Reason: java.lang.ClassNotFoundException: jakarta.servlet.Servlet.
Warning: Could not resolve org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy.
Warning: Could not resolve org.wildfly.transaction.client.ContextTransactionManager for reflection configuration. Reason: java.lang.ClassNotFoundException: org.wildfly.transaction.client.ContextTransactionManager.
Warning: Could not resolve org.wildfly.transaction.client.ContextTransactionManager for reflection configuration. Reason: java.lang.ClassNotFoundException: org.wildfly.transaction.client.ContextTransactionManager.
Warning: Could not resolve org.wildfly.transaction.client.LocalUserTransaction for reflection configuration. Reason: java.lang.ClassNotFoundException: org.wildfly.transaction.client.LocalUserTransaction.
Warning: Could not resolve org.jboss.logmanager.LogManager for reflection configuration. Reason: java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager.
Warning: Method ch.qos.logback.core.encoder.LayoutWrappingEncoder.setParent(Appender) not found.
Warning: Could not resolve com.aayushatharva.brotli4j.Brotli4jLoader for reflection configuration. Reason: java.lang.ClassNotFoundException: com.aayushatharva.brotli4j.Brotli4jLoader.
Warning: Could not resolve com.github.luben.zstd.Zstd for reflection configuration. Reason: java.lang.ClassNotFoundException: com.github.luben.zstd.Zstd.
Warning: Could not resolve com.ning.compress.lzf.impl.UnsafeChunkDecoder for reflection configuration. Reason: java.lang.ClassNotFoundException: com.ning.compress.lzf.impl.UnsafeChunkDecoder.
Warning: Could not register io.netty.handler.codec.compression.Lz4FrameDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: net/jpountz/lz4/LZ4Exception.
Warning: Could not register io.netty.handler.codec.compression.Lz4FrameEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: net/jpountz/lz4/LZ4Exception.
Warning: Could not register io.netty.handler.codec.marshalling.CompatibleMarshallingDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteInput.
Warning: Could not register io.netty.handler.codec.marshalling.CompatibleMarshallingEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteOutput.
Warning: Could not register io.netty.handler.codec.marshalling.MarshallingDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteInput.
Warning: Could not register io.netty.handler.codec.marshalling.MarshallingEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteOutput.
Warning: Could not register io.netty.handler.codec.protobuf.ProtobufDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: com/google/protobuf/ExtensionRegistryLite.
Warning: Could not resolve org.apache.commons.logging.impl.Log4JLogger for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4JLogger.
Warning: Could not resolve org.apache.commons.logging.impl.LogFactoryImpl for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl.
Warning: Could not resolve org.apache.commons.logging.impl.WeakHashtable for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.WeakHashtable.
Warning: Could not resolve org.apache.log4j.Level for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.log4j.Level.
Warning: Could not resolve org.apache.log4j.Priority for reflection configuration. Reason: java.lang.ClassNotFoundException: org.apache.log4j.Priority.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.rsa.DigestSignatureSpi$SHA256 for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.rsa.DigestSignatureSpi$SHA256.
Warning: Could not resolve org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.asymmetric.x509.CertificateFactory.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Haraka$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Haraka$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Keccak$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Keccak$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.MD2$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.MD2$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.MD4$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.MD4$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.MD5$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.MD5$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA1$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA1$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA224$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA224$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA256$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA256$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA3$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA3$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA384$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA384$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SHA512$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SHA512$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.SM3$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.SM3$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Skein$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Skein$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Tiger$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Tiger$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.keystore.BC$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.keystore.BC$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.AES$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.AES$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.DES$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.DES$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings.
Warning: Could not resolve org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings for reflection configuration. Reason: java.lang.ClassNotFoundException: org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings.
Warning: Could not resolve org.conscrypt.Conscrypt for reflection configuration. Reason: java.lang.ClassNotFoundException: org.conscrypt.Conscrypt.
Warning: Could not resolve org.conscrypt.OpenSSLContextImpl$TLSv13 for reflection configuration. Reason: java.lang.ClassNotFoundException: org.conscrypt.OpenSSLContextImpl$TLSv13.
Warning: Could not resolve org.hamcrest.number.OrderingComparison for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hamcrest.number.OrderingComparison.
Warning: Could not resolve com.sun.el.ExpressionFactoryImpl for reflection configuration. Reason: java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl.
Warning: Could not resolve groovy.grape.GrabAnnotationTransformation for reflection configuration. Reason: java.lang.ClassNotFoundException: groovy.grape.GrabAnnotationTransformation.
Warning: Could not resolve groovy.lang.Script for reflection configuration. Reason: java.lang.ClassNotFoundException: groovy.lang.Script.
Warning: Could not resolve groovy.lang.Script for reflection configuration. Reason: java.lang.ClassNotFoundException: groovy.lang.Script.
Warning: Could not resolve groovyjarjarantlr.CommonToken for reflection configuration. Reason: java.lang.ClassNotFoundException: groovyjarjarantlr.CommonToken.
Warning: Could not resolve javafx.beans.value.ObservableValue for reflection configuration. Reason: java.lang.ClassNotFoundException: javafx.beans.value.ObservableValue.
Warning: Could not resolve javax.money.MonetaryAmount for reflection configuration. Reason: java.lang.ClassNotFoundException: javax.money.MonetaryAmount.
Warning: Could not resolve org.codehaus.groovy.antlr.GroovySourceAST for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.antlr.GroovySourceAST.
Warning: Could not resolve org.codehaus.groovy.ast.builder.AstBuilderTransformation for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.ast.builder.AstBuilderTransformation.
Warning: Could not resolve org.codehaus.groovy.runtime.ScriptBytecodeAdapter for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.ScriptBytecodeAdapter.
Warning: Could not resolve org.glassfish.expressly.ValueExpressionImpl for reflection configuration. Reason: java.lang.ClassNotFoundException: org.glassfish.expressly.ValueExpressionImpl.
Warning: Could not resolve org.glassfish.expressly.parser.AstValue for reflection configuration. Reason: java.lang.ClassNotFoundException: org.glassfish.expressly.parser.AstValue.
Warning: Could not register io.netty.handler.codec.compression.Lz4FrameDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: net/jpountz/lz4/LZ4Exception.
Warning: Could not register io.netty.handler.codec.compression.Lz4FrameEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: net/jpountz/lz4/LZ4Exception.
Warning: Could not register io.netty.handler.codec.marshalling.CompatibleMarshallingDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteInput.
Warning: Could not register io.netty.handler.codec.marshalling.CompatibleMarshallingEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteOutput.
Warning: Could not register io.netty.handler.codec.marshalling.MarshallingDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteInput.
Warning: Could not register io.netty.handler.codec.marshalling.MarshallingEncoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteOutput.
Warning: Could not register io.netty.handler.codec.protobuf.ProtobufDecoder: queryAllPublicMethods for reflection. Reason: java.lang.NoClassDefFoundError: com/google/protobuf/ExtensionRegistryLite.
Warning: Could not register org.springframework.security.web.access.expression.WebSecurityExpressionRoot: allDeclaredFields for reflection. Reason: java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServletRequest.
Warning: Could not resolve org.springframework.boot.devtools.restart.RestartScopeInitializer for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.devtools.restart.RestartScopeInitializer.
Warning: Could not resolve org.springframework.boot.devtools.env.DevToolsPropertyDefaultsPostProcessor for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.devtools.env.DevToolsPropertyDefaultsPostProcessor.
Warning: Could not resolve org.springframework.boot.devtools.restart.RestartApplicationListener for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.devtools.restart.RestartApplicationListener.
Warning: Could not resolve org.springframework.boot.devtools.logger.DevToolsLogFactory$Listener for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.devtools.logger.DevToolsLogFactory$Listener.
Warning: Could not resolve org.springframework.boot.devtools.env.DevToolsHomePropertiesPostProcessor for reflection configuration. Reason: java.lang.ClassNotFoundException: org.springframework.boot.devtools.env.DevToolsHomePropertiesPostProcessor.
[1/7] Initializing...                                                                                   (22.3s @ 0.71GB)
 Version info: 'GraalVM 22.3.0 Java 17 CE'
 Java version info: '17.0.5+8-jvmci-22.3-b08'
 C compiler: gcc (linux, x86_64, 11.2.0)
 Garbage collector: Serial GC
 1 user-specific feature(s)
 - org.springframework.aot.nativex.feature.PreComputeFieldFeature
Field org.apache.commons.logging.LogAdapter#log4jSpiPresent set to true at build time
Field org.apache.commons.logging.LogAdapter#log4jSlf4jProviderPresent set to true at build time
Field org.apache.commons.logging.LogAdapter#slf4jSpiPresent set to true at build time
Field org.apache.commons.logging.LogAdapter#slf4jApiPresent set to true at build time
Field org.springframework.core.NativeDetector#imageCode set to true at build time
Field org.springframework.format.support.DefaultFormattingConversionService#jsr354Present set to false at build time
Field org.springframework.core.KotlinDetector#kotlinPresent set to true at build time
Field org.springframework.core.KotlinDetector#kotlinReflectPresent set to true at build time
Field org.springframework.cglib.core.AbstractClassGenerator#imageCode set to true at build time
Field org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfiguration#isOAuth2Present set to false at build time
Field org.springframework.boot.logging.log4j2.Log4J2LoggingSystem$Factory#PRESENT set to false at build time
Field org.springframework.core.ReactiveAdapterRegistry#reactorPresent set to true at build time
Field org.springframework.core.ReactiveAdapterRegistry#rxjava3Present set to false at build time
Field org.springframework.core.ReactiveAdapterRegistry#kotlinCoroutinesPresent set to false at build time
Field org.springframework.core.ReactiveAdapterRegistry#mutinyPresent set to false at build time
Field org.springframework.web.reactive.config.WebFluxConfigurationSupport#jakartaValidatorPresent set to true at build time
Field org.springframework.boot.logging.java.JavaLoggingSystem$Factory#PRESENT set to true at build time
Field org.springframework.boot.logging.logback.LogbackLoggingSystem$Factory#PRESENT set to true at build time
Field org.springframework.data.r2dbc.dialect.PostgresDialect#JSON_PRESENT set to true at build time
Field org.springframework.data.r2dbc.dialect.PostgresDialect#GEO_TYPES_PRESENT set to true at build time
Field org.springframework.data.util.NullableWrapperConverters#GUAVA_PRESENT set to true at build time
Field org.springframework.data.util.NullableWrapperConverters#SCALA_PRESENT set to false at build time
Field org.springframework.data.util.NullableWrapperConverters#VAVR_PRESENT set to false at build time
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
Field org.springframework.data.repository.util.QueryExecutionConverters#VAVR_PRESENT set to false at build time
Field org.springframework.data.convert.JMoleculesConverters#JMOLECULES_PRESENT set to false at build time
Field org.springframework.web.context.support.StandardServletEnvironment#jndiPresent set to true at build time
Field org.springframework.transaction.interceptor.TransactionAspectSupport#vavrPresent set to false at build time
Field org.springframework.transaction.interceptor.TransactionAspectSupport#reactiveStreamsPresent set to true at build time
Field org.springframework.web.reactive.function.client.DefaultWebClientBuilder#reactorNettyClientPresent set to true at build time
Field org.springframework.web.reactive.function.client.DefaultWebClientBuilder#reactorNetty2ClientPresent set to false at build time
Field org.springframework.web.reactive.function.client.DefaultWebClientBuilder#jettyClientPresent set to false at build time
Field org.springframework.web.reactive.function.client.DefaultWebClientBuilder#httpComponentsClientPresent set to false at build time
Field reactor.netty.internal.util.Metrics#isMicrometerAvailable set to true at build time
Field reactor.netty.internal.util.Metrics#isTracingAvailable set to false at build time
Field org.springframework.context.event.ApplicationListenerMethodAdapter#reactiveStreamsPresent set to true at build time
Field org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#jta12Present set to true at build time
Field org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#ejb3Present set to false at build time
Field reactor.core.publisher.ContextPropagation#isContextPropagationAvailable set to false at build time
Field org.springframework.data.util.ReactiveWrappers#PROJECT_REACTOR_PRESENT set to true at build time
Field org.springframework.data.util.ReactiveWrappers#RXJAVA3_PRESENT set to false at build time
Field org.springframework.data.util.ReactiveWrappers#KOTLIN_COROUTINES_PRESENT set to false at build time
Field org.springframework.data.util.ReactiveWrappers#MUTINY_PRESENT set to false at build time
Field org.springframework.data.repository.util.ReactiveWrapperConverters#RXJAVA3_PRESENT set to false at build time
Field org.springframework.data.repository.util.ReactiveWrapperConverters#REACTOR_PRESENT set to true at build time
Field org.springframework.data.repository.util.ReactiveWrapperConverters#KOTLIN_COROUTNES_PRESENT set to false at build time
Field org.springframework.data.repository.util.ReactiveWrapperConverters#MUTINY_PRESENT set to false at build time
Field reactor.netty.resources.DefaultLoopIOUring#isIoUringAvailable set to false at build time
ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
Field org.springframework.boot.actuate.endpoint.invoke.reflect.OperationMethodParameter#jsr305Present set to true at build time
Field reactor.netty.resources.DefaultLoopEpoll#isEpollAvailable set to false at build time
Field reactor.netty.resources.DefaultLoopKQueue#isKqueueAvailable set to false at build time
Field org.springframework.boot.logging.logback.LogbackLoggingSystemProperties#JBOSS_LOGGING_PRESENT set to true at build time
Field org.springframework.boot.autoconfigure.web.format.WebConversionService#JSR_354_PRESENT set to false at build time
Field org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService#tomcatWsPresent set to false at build time
Field org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService#jettyWsPresent set to false at build time
Field org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService#undertowWsPresent set to false at build time
Field org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService#reactorNettyPresent set to true at build time
Field org.springframework.web.reactive.socket.server.support.HandshakeWebSocketService#reactorNetty2Present set to false at build time
Field org.springframework.data.repository.core.support.ReactiveRepositoryFactorySupport$RxJavaOneConversionSetup#REACTIVE_STREAMS_PRESENT set to true at build time
Field org.springframework.context.annotation.AnnotationConfigUtils#jakartaAnnotationsPresent set to true at build time
Field org.springframework.context.annotation.AnnotationConfigUtils#jsr250Present set to false at build time
Field org.springframework.context.annotation.AnnotationConfigUtils#jpaPresent set to true at build time
Field org.springframework.context.annotation.CommonAnnotationBeanPostProcessor#jndiPresent set to true at build time
Field org.springframework.boot.actuate.endpoint.web.annotation.DiscoveredWebOperation#REACTIVE_STREAMS_PRESENT set to true at build time
Field org.springframework.web.reactive.config.ResourceChainRegistration#isWebJarsAssetLocatorPresent set to true at build time
Field org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvoker#IS_REACTOR_PRESENT set to true at build time
Field reactor.netty.http.server.HAProxyMessageReader#isProxyProtocolAvailable set to false at build time
Field org.springframework.web.reactive.socket.WebSocketMessage#reactorNetty2Present set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#jackson2Present set to true at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#jackson2SmilePresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#jaxb2Present set to true at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#protobufPresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#synchronossMultipartPresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#nettyByteBufPresent set to true at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#netty5BufferPresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#kotlinSerializationCborPresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#kotlinSerializationJsonPresent set to false at build time
Field org.springframework.http.codec.support.BaseDefaultCodecs#kotlinSerializationProtobufPresent set to false at build time
Field org.springframework.http.codec.xml.XmlEventDecoder#aaltoPresent set to false at build time
Field org.springframework.web.client.RestTemplate#romePresent set to false at build time
Field org.springframework.web.client.RestTemplate#jaxb2Present set to true at build time
Field org.springframework.web.client.RestTemplate#jackson2Present set to true at build time
Field org.springframework.web.client.RestTemplate#jackson2XmlPresent set to false at build time
Field org.springframework.web.client.RestTemplate#jackson2SmilePresent set to false at build time
Field org.springframework.web.client.RestTemplate#jackson2CborPresent set to false at build time
Field org.springframework.web.client.RestTemplate#gsonPresent set to false at build time
Field org.springframework.web.client.RestTemplate#jsonbPresent set to false at build time
Field org.springframework.web.client.RestTemplate#kotlinSerializationCborPresent set to false at build time
Field org.springframework.web.client.RestTemplate#kotlinSerializationJsonPresent set to false at build time
Field org.springframework.web.client.RestTemplate#kotlinSerializationProtobufPresent set to false at build time
[2/7] Performing analysis...  [**********]                                                             (140.2s @ 4.02GB)
  41,969 (92.11%) of 45,566 classes reachable
  70,184 (70.93%) of 98,954 fields reachable
 190,243 (62.89%) of 302,498 methods reachable
   2,250 classes, 1,515 fields, and 12,485 methods registered for reflection
      85 classes,    76 fields, and    69 methods registered for JNI access
       6 native libraries: dl, m, pthread, rt, stdc++, z
[3/7] Building universe...                                                                              (17.9s @ 4.58GB)
[4/7] Parsing methods...      [****]                                                                    (18.0s @ 2.01GB)
[5/7] Inlining methods...     [*****]                                                                    (8.0s @ 2.66GB)
[6/7] Compiling methods...    [*********]                                                               (93.1s @ 3.29GB)
[7/7] Creating image...                                                                                 (11.7s @ 5.44GB)
  77.74MB (47.14%) for code area:   127,212 compilation units
  78.21MB (47.43%) for image heap:  755,917 objects and 215 resources
   8.96MB ( 5.43%) for other data
 164.91MB in total
------------------------------------------------------------------------------------------------------------------------
Top 10 packages in code area:                               Top 10 object types in image heap:
   2.91MB jdk.proxy4                                          16.96MB byte[] for code metadata
   1.64MB sun.security.ssl                                    11.04MB byte[] for embedded resources
   1.42MB reactor.core.publisher                              10.67MB java.lang.Class
   1.28MB java.util                                            7.53MB byte[] for java.lang.String
   1.07MB org.apache.lucene.index                              7.29MB java.lang.String
 932.24KB java.lang.invoke                                     5.18MB byte[] for general heap data
 720.88KB com.sun.crypto.provider                              3.52MB com.oracle.svm.core.hub.DynamicHubCompanion
 642.03KB kotlin.reflect.jvm.internal.impl.metadata            2.56MB byte[] for reflection metadata
 616.84KB io.netty.buffer                                      1.46MB c.o.svm.core.hub.DynamicHub$ReflectionMetadata
 610.21KB java.lang                                            1.45MB java.lang.String[]
  65.05MB for 1602 more packages                               9.90MB for 7426 more object types
------------------------------------------------------------------------------------------------------------------------
                        23.0s (7.0% of total time) in 89 GCs | Peak RSS: 8.17GB | CPU load: 5.57
------------------------------------------------------------------------------------------------------------------------
Produced artifacts:
 /home/johnniang/workspaces/halo-dev/halo/build/native/nativeCompile/halo (executable)
 /home/johnniang/workspaces/halo-dev/halo/build/native/nativeCompile/halo.build_artifacts.txt (txt)
========================================================================================================================
Finished generating 'halo' in 5m 25s.
    [native-image-plugin] Native Image written to: /home/johnniang/workspaces/halo-dev/halo/build/native/nativeCompile

> Task :nativeRun FAILED

    __  __      __
   / / / /___ _/ /___
  / /_/ / __ `/ / __ \
 / __  / /_/ / / /_/ /
/_/ /_/\__,_/_/\____/

Version:
2023-02-03T14:15:11.646+08:00  INFO 3248 --- [           main] run.halo.app.Application                 : Starting AOT-processed Application using Java 17.0.5 with PID 3248 (/home/johnniang/workspaces/halo-dev/halo/build/native/nativeCompile/halo started by johnniang in /home/johnniang/workspaces/halo-dev/halo)
2023-02-03T14:15:11.647+08:00  INFO 3248 --- [           main] run.halo.app.Application                 : No active profile set, falling back to 1 default profile: "default"
2023-02-03T14:15:11.706+08:00  INFO 3248 --- [           main] c.g.j.r.m.MysqlConnectionFactoryProvider : set jasync.mysql.CLIENT_FOUND_ROWS=true
2023-02-03T14:15:11.736+08:00  INFO 3248 --- [           main] org.pf4j.DefaultPluginStatusProvider     : Enabled plugins: []
2023-02-03T14:15:11.736+08:00  INFO 3248 --- [           main] org.pf4j.DefaultPluginStatusProvider     : Disabled plugins: []
2023-02-03T14:15:11.736+08:00  INFO 3248 --- [           main] org.pf4j.DefaultPluginManager            : PF4J version 3.8.0 in 'deployment' mode
2023-02-03T14:15:11.797+08:00  WARN 3248 --- [           main] .r.c.ReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customEndpoints': Instantiation of supplied bean failed
2023-02-03T14:15:11.797+08:00  INFO 3248 --- [           main] r.h.a.e.c.DefaultControllerManager       : Shutting down 0 controllers...
2023-02-03T14:15:11.797+08:00  INFO 3248 --- [           main] r.h.a.e.c.DefaultControllerManager       : Shutdown 0 controllers.
2023-02-03T14:15:11.798+08:00  INFO 3248 --- [           main] r.h.a.e.controller.DefaultController     : Disposing controller garbage-collector-controller
2023-02-03T14:15:11.798+08:00  INFO 3248 --- [           main] r.h.a.e.controller.DefaultController     : Controller garbage-collector-controller is disposed
2023-02-03T14:15:11.798+08:00  WARN 3248 --- [pool-5-thread-1] run.halo.app.metrics.VisitLogWriter      : VisitLogWrite thread [pool-5-thread-1] interrupted
2023-02-03T14:15:11.799+08:00 ERROR 3248 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customEndpoints': Instantiation of supplied bean failed
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1236) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1210) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1157) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[halo:6.0.4]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[halo:6.0.4]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[halo:6.0.4]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[halo:6.0.4]
        at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[halo:3.0.2]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[halo:3.0.2]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[halo:3.0.2]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[halo:3.0.2]
        at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) ~[na:na]
        at run.halo.app.Application.main(Application.java:28) ~[halo:na]
Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:89) ~[na:na]
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76) ~[na:na]
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130) ~[na:na]
        at java.base@17.0.5/java.lang.ClassLoader.defineClass(ClassLoader.java:294) ~[halo:na]
        at net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader.invoker(JavaDispatcher.java:1383) ~[na:na]
        at net.bytebuddy.utility.dispatcher.JavaDispatcher$InvokerCreationAction.run(JavaDispatcher.java:459) ~[na:na]
        at net.bytebuddy.utility.dispatcher.JavaDispatcher$InvokerCreationAction.run(JavaDispatcher.java:452) ~[na:na]
        at java.base@17.0.5/java.security.AccessController.executePrivileged(AccessController.java:168) ~[na:na]
        at java.base@17.0.5/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
        at net.bytebuddy.utility.dispatcher.JavaDispatcher.doPrivileged(JavaDispatcher.java) ~[na:na]
        at net.bytebuddy.utility.dispatcher.JavaDispatcher.<clinit>(JavaDispatcher.java:87) ~[na:na]
        at net.bytebuddy.description.type.TypeDescription$ForLoadedType.<clinit>(TypeDescription.java:8659) ~[na:na]
        at net.bytebuddy.description.type.TypeDescription$Generic$Builder.parameterizedType(TypeDescription.java:7140) ~[halo:na]
        at net.bytebuddy.description.type.TypeDescription$Generic$Builder.parameterizedType(TypeDescription.java:7126) ~[halo:na]
        at net.bytebuddy.description.type.TypeDescription$Generic$Builder.parameterizedType(TypeDescription.java:7115) ~[halo:na]
        at run.halo.app.infra.utils.GenericClassUtils.generateConcreteClass(GenericClassUtils.java:37) ~[halo:na]
        at run.halo.app.extension.ListResult.generateGenericClass(ListResult.java:125) ~[halo:na]
        at run.halo.app.core.extension.attachment.endpoint.AttachmentEndpoint.lambda$endpoint$1(AttachmentEndpoint.java:93) ~[halo:na]
        at org.springdoc.core.fn.AbstractSpringdocRouteBuilder.getOperationBuilder(AbstractSpringdocRouteBuilder.java:45) ~[halo:2.0.0]
        at org.springdoc.webflux.core.fn.SpringdocRouteBuilder.GET(SpringdocRouteBuilder.java:95) ~[na:na]
        at run.halo.app.core.extension.attachment.endpoint.AttachmentEndpoint.endpoint(AttachmentEndpoint.java:87) ~[halo:na]
        at run.halo.app.core.extension.endpoint.CustomEndpointsBuilder.add(CustomEndpointsBuilder.java:24) ~[na:na]
        at java.base@17.0.5/java.util.LinkedHashMap$LinkedValues.forEach(LinkedHashMap.java:647) ~[na:na]
        at run.halo.app.config.WebFluxConfig.customEndpoints(WebFluxConfig.java:93) ~[halo:na]
        at run.halo.app.config.WebFluxConfig$$SpringCGLIB$$0.CGLIB$customEndpoints$3(<generated>) ~[halo:na]
        at run.halo.app.config.WebFluxConfig$$SpringCGLIB$$2.invoke(<generated>) ~[halo:na]
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[halo:6.0.4]
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[na:na]
        at run.halo.app.config.WebFluxConfig$$SpringCGLIB$$0.customEndpoints(<generated>) ~[halo:na]
        at run.halo.app.config.WebFluxConfig__BeanDefinitions.lambda$getCustomEndpointsInstanceSupplier$2(WebFluxConfig__BeanDefinitions.java:64) ~[na:na]
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:68) ~[halo:6.0.4]
        at org.springframework.util.function.ThrowingBiFunction.apply(ThrowingBiFunction.java:54) ~[halo:6.0.4]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.lambda$get$2(BeanInstanceSupplier.java:208) ~[na:na]
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:59) ~[halo:6.0.4]
        at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:47) ~[halo:6.0.4]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.invokeBeanSupplier(BeanInstanceSupplier.java:220) ~[na:na]
        at org.springframework.beans.factory.aot.BeanInstanceSupplier.get(BeanInstanceSupplier.java:208) ~[na:na]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainInstanceFromSupplier(AbstractAutowireCapableBeanFactory.java:1225) ~[halo:6.0.4]
        ... 17 common frames omitted

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':nativeRun'.
> Process 'command '/home/johnniang/workspaces/halo-dev/halo/build/native/nativeCompile/halo'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 5m 53s
12 actionable tasks: 12 executed

See https://docs.spring.io/spring-boot/docs/current/reference/html/native-image.html for more.

kulame commented 1 year ago

希望可以支持graalvm 对内存占用比较低。

JohnNiang commented 1 year ago

希望可以支持graalvm 对内存占用比较低。

Hi,有兴趣试试么?我这边在 https://github.com/halo-dev/halo/issues/3215#issuecomment-1415073535 尝试过,无法正常运行, 这个错误也没有思路排查。

Roozenlz commented 11 months ago

使用OpenJ9可以为我节省一半的运行内存,原本845MB,现在只需要420MB即可流畅运行

Songzhizong commented 11 months ago

使用OpenJ9可以为我节省一半的运行内存,原本845MB,现在只需要420MB即可流畅运行

是的,使用OpenJ9可以节省不少内存,目前我也是这么做的。

JohnNiang commented 11 months ago

Hi @Roozenlz and @Songzhizong ,可以参考 https://github.com/halo-dev/halo/issues/2584