apollo-java icon indicating copy to clipboard operation
apollo-java copied to clipboard

最近升级了SpringBoot 3.3,试了下graalvm,好像apollo这边还不支持graalvm

Open refeccd opened this issue 1 year ago • 5 comments

打包成二进制文件是成功了的,运行时报了下面的错误

Exception in thread "main" java.lang.IllegalArgumentException: Unable to instantiate factory class [com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer] for factory type [org.springframework.context.ApplicationContextInitializer]
        at org.springframework.core.io.support.SpringFactoriesLoader$FailureHandler.lambda$throwing$0(SpringFactoriesLoader.java:647)
        at org.springframework.core.io.support.SpringFactoriesLoader$FailureHandler.lambda$handleMessage$3(SpringFactoriesLoader.java:671)
        at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:231)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:206)
        at org.springframework.core.io.support.SpringFactoriesLoader.load(SpringFactoriesLoader.java:160)
        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:483)
        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:479)
        at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:295)
        at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:274)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1363)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1352)
        at com.aijiao.app.evaluation.Application.main(Application.java:12)
        at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
Caused by: java.lang.reflect.InvocationTargetException
        at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
        at [email protected]/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
        at org.springframework.core.io.support.SpringFactoriesLoader$FactoryInstantiator.instantiate(SpringFactoriesLoader.java:382)
        at org.springframework.core.io.support.SpringFactoriesLoader.instantiateFactory(SpringFactoriesLoader.java:228)
        ... 10 more
Caused by: com.ctrip.framework.apollo.exceptions.ApolloConfigException: Unable to load instance for com.ctrip.framework.apollo.spring.config.ConfigPropertySourceFactory!
        at com.ctrip.framework.apollo.spring.util.SpringInjector.getInstance(SpringInjector.java:57)
        at com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer.<init>(ApolloApplicationContextInitializer.java:99)
        ... 14 more
Caused by: com.ctrip.framework.apollo.exceptions.ApolloConfigException: Unable to initialize Apollo Spring Injector!
        at com.ctrip.framework.apollo.spring.util.SpringInjector.getInjector(SpringInjector.java:40)
        at com.ctrip.framework.apollo.spring.util.SpringInjector.getInstance(SpringInjector.java:53)
        ... 15 more
Caused by: java.lang.AssertionError: java.lang.NoSuchMethodException: java.lang.Long.parseLong(java.lang.String)
        at com.google.inject.internal.TypeConverterBindingProcessor.convertToPrimitiveType(TypeConverterBindingProcessor.java:145)
        at com.google.inject.internal.TypeConverterBindingProcessor.prepareBuiltInConverters(TypeConverterBindingProcessor.java:46)
        at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:182)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
        at com.google.inject.Guice.createInjector(Guice.java:87)
        at com.google.inject.Guice.createInjector(Guice.java:69)
        at com.google.inject.Guice.createInjector(Guice.java:59)
        at com.ctrip.framework.apollo.spring.util.SpringInjector.getInjector(SpringInjector.java:38)
        ... 16 more
Caused by: java.lang.NoSuchMethodException: java.lang.Long.parseLong(java.lang.String)
        at [email protected]/java.lang.Class.checkMethod(DynamicHub.java:1078)
        at [email protected]/java.lang.Class.getMethod(DynamicHub.java:1063)
        at com.google.inject.internal.TypeConverterBindingProcessor.convertToPrimitiveType(TypeConverterBindingProcessor.java:122)
        ... 23 more

refeccd avatar Sep 26 '24 03:09 refeccd

这个报错看上去是 graalvm 自己的问题?

Caused by: java.lang.NoSuchMethodException: java.lang.Long.parseLong(java.lang.String) at [email protected]/java.lang.Class.checkMethod(DynamicHub.java:1078) at [email protected]/java.lang.Class.getMethod(DynamicHub.java:1063) at com.google.inject.internal.TypeConverterBindingProcessor.convertToPrimitiveType(TypeConverterBindingProcessor.java:122) ... 23 more

nobodyiam avatar Sep 28 '24 09:09 nobodyiam

编译的时候没报这个错,但是运行的时候报错了 我不是很懂graalvm。。貌似graalvm是不允许运行时进行反射了,报错的这个地方应该就是一个反射? apollo有做过这方面的尝试吗(支持graalvm)?

refeccd avatar Sep 28 '24 14:09 refeccd

QQ_1727534786331

refeccd avatar Sep 28 '24 14:09 refeccd

和反射有一定关系,graalvm 在编译的时候可能少加载了一些类库,记得应该是可以手动配置增加一些加载项的。 apollo 本身没有特意做 graalvm 的支持,可以试试在 spring boot 3 下跑,不过总体还不是很成熟。

nobodyiam avatar Sep 29 '24 01:09 nobodyiam

已经是在SpringBoot3的环境下跑了 SpringBoot:3.3.4 Apollo: 2.3.0

上面这个错误看起来是出现在guice里,我记得以前有看到issues说,考虑摘除掉guice的依赖

refeccd avatar Sep 29 '24 02:09 refeccd

This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in 7 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions.

stale[bot] avatar Nov 04 '24 03:11 stale[bot]

遇到了类似问题

fanjlii avatar Nov 21 '24 02:11 fanjlii