-
Notifications
You must be signed in to change notification settings - Fork 26.5k
Description
Steps to reproduce this issue
Step 1 run my demo appliction under dubbo3-beta2 is OK
(1)jdk 17.dubbo3-beta2
reproducer:
https://github.com/imgoby/dubbo3beta2-native-demo
<dubbo.version>3.3.0-beta.2</dubbo.version>
comment: I have added org.apache.dubbo.common.utils.ClassLoaderResourceLoader to my project source to resolve a URL issue under native-image
(2) build:
mvn clean package native:compile -P native
(3)run
cd spring-cloud-alibaba-consul-dubbo-consumer/target
./spring-cloud-alibaba-consul-dubbo-consumer
Everything is OK.
Step 2 run my demo appliction under dubbo3 is failed
(1)jdk 17.dubbo3
reproducer:
https://github.com/imgoby/dubbo3-native-demo
<dubbo.version>3.3.0</dubbo.version>
comment:
(2) build:
mvn clean package native:compile -P native
(3)run
cd spring-cloud-alibaba-consul-dubbo-consumer/target
./spring-cloud-alibaba-consul-dubbo-consumer
com.oracle.svm.core.jdk.UnsupportedFeatureError: Proxy class defined by interfaces [interface com.yuhoutian.demo.api.DemoService, interface org.apache.dubbo.rpc.service.EchoService, interface org.apache.dubbo.rpc.service.Destroyable] not found. Generating proxy classes at runtime is not supported. Proxy classes need to be defined at image build time by specifying the list of interfaces that they implement. To define proxy classes use -H:DynamicProxyConfigurationFiles=<comma-separated-config-files> and -H:DynamicProxyConfigurationResources=<comma-separated-config-resources> options.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:96)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.proxy.DynamicProxySupport.getProxyClass(DynamicProxySupport.java:171)
at java.base@17.0.12/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:47)
at java.base@17.0.12/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1037)
at org.apache.dubbo.config.spring.ReferenceBean.generateFromJdk(ReferenceBean.java:422)
at org.apache.dubbo.config.spring.ReferenceBean.createLazyProxy(ReferenceBean.java:369)
at org.apache.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:213)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:148)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:90)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1823)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1273)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:259)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.apache.dubbo.config.spring6.beans.factory.aot.ReferencedFieldValueResolver.resolveValue(ReferencedFieldValueResolver.java:191)
at org.apache.dubbo.config.spring6.beans.factory.aot.ReferencedFieldValueResolver.resolveAndSet(ReferencedFieldValueResolver.java:169)
at com.yuhoutian.demo.consumer.Task__DubboReference.apply(Task__DubboReference.java:14)
at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293)
at com.yuhoutian.demo.consumer.ConsumerApplication.main(ConsumerApplication.java:29)
2024-09-25T10:39:04.354+08:00 WARN 22243 --- [ main] w.s.c.ServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'task': Unsatisfied dependency expressed through field 'demoService': Error creating bean with name 'demoService': FactoryBean threw exception on object creation
2024-09-25T10:39:04.355+08:00 INFO 22243 --- [ main] c.a.c.d.s.DubboGenericServiceFactory : The Dubbo GenericService ReferenceBeans are destroying...
2024-09-25T10:39:04.355+08:00 INFO 22243 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2024-09-25T10:39:04.356+08:00 ERROR 22243 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'task': Unsatisfied dependency expressed through field 'demoService': Error creating bean with name 'demoService': FactoryBean threw exception on object creation
at org.apache.dubbo.config.spring6.beans.factory.aot.ReferencedFieldValueResolver.resolveValue(ReferencedFieldValueResolver.java:198)
at org.apache.dubbo.config.spring6.beans.factory.aot.ReferencedFieldValueResolver.resolveAndSet(ReferencedFieldValueResolver.java:169)
at com.yuhoutian.demo.consumer.Task__DubboReference.apply(Task__DubboReference.java:14)
at org.springframework.beans.factory.support.InstanceSupplier$1.get(InstanceSupplier.java:83)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.obtainInstanceFromSupplier(DefaultListableBeanFactory.java:947)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1158)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:942)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:310)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293)
at com.yuhoutian.demo.consumer.ConsumerApplication.main(ConsumerApplication.java:29)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoService': FactoryBean threw exception on object creation
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:154)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:90)
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1823)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1273)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:259)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
at org.apache.dubbo.config.spring6.beans.factory.aot.ReferencedFieldValueResolver.resolveValue(ReferencedFieldValueResolver.java:191)
... 22 common frames omitted
Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: Proxy class defined by interfaces [interface com.yuhoutian.demo.api.DemoService, interface org.apache.dubbo.rpc.service.EchoService, interface org.apache.dubbo.rpc.service.Destroyable] not found. Generating proxy classes at runtime is not supported. Proxy classes need to be defined at image build time by specifying the list of interfaces that they implement. To define proxy classes use -H:DynamicProxyConfigurationFiles=<comma-separated-config-files> and -H:DynamicProxyConfigurationResources=<comma-separated-config-resources> options.
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:96)
at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.proxy.DynamicProxySupport.getProxyClass(DynamicProxySupport.java:171)
at java.base@17.0.12/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:47)
at java.base@17.0.12/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1037)
at org.apache.dubbo.config.spring.ReferenceBean.generateFromJdk(ReferenceBean.java:422)
at org.apache.dubbo.config.spring.ReferenceBean.createLazyProxy(ReferenceBean.java:369)
at org.apache.dubbo.config.spring.ReferenceBean.getObject(ReferenceBean.java:213)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:148)
... 28 common frames omitted
I know I should add something to file proxy-config.json
for example:
[interface com.yuhoutian.demo.api.DemoService, interface org.apache.dubbo.rpc.service.EchoService, interface org.apache.dubbo.rpc.service.Destroyable]
But it was not needed under dubbo3-beta2. Why dubbo3 should do that.
I think something is wrong under dubbo3.
Please Check it and resolve it.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status