स्प्रिंगडॉक निर्भरता पर विफल होना
मैं स्प्रिंग बूट और ग्रेवलम नेटिव इमेज का उपयोग करके एक नमूना एप्लिकेशन बनाने की कोशिश कर रहा हूं, हालांकि जैसे ही मैं स्प्रिंगडॉक के लिए निर्भरता जोड़ता हूं, उत्पन्न निष्पादन योग्य अब निम्नलिखित के कारण काम नहीं कर रहा है:
java.lang.IllegalStateException: Error processing condition on org.springdoc.core.SpringDocConfiguration.springdocBeanFactoryPostProcessor2
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:60) ~[poc-graalvm-native.exe:na]
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:108) ~[na:na]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:184) ~[na:na]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:144) ~[na:na]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) ~[na:na]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:331) ~[poc-graalvm-native.exe:na]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236) ~[poc-graalvm-native.exe:na]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280) ~[na:na]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707) ~[na:na]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533) ~[na:na]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[na:na]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[poc-graalvm-native.exe:na]
at c.b.t.graal.GraalVMApplicationPoc.main(GraalVMApplicationPoc.java:31) [poc-graalvm-native.exe:na]
Caused by: java.lang.IllegalStateException: java.io.FileNotFoundException: class path resource [org/springdoc/core/CacheOrGroupedOpenApiCondition$OnCacheDisabled.class] cannot be opened because it does not exist at org.springframework.boot.autoconfigure.condition.AbstractNestedCondition$MemberConditions.getMetadata(AbstractNestedCondition.java:149) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.autoconfigure.condition.AbstractNestedCondition$MemberConditions.getMemberConditions(AbstractNestedCondition.java:121) ~[poc-graalvm-native.exe:na] at org.springframework.boot.autoconfigure.condition.AbstractNestedCondition$MemberConditions.<init>(AbstractNestedCondition.java:114) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.autoconfigure.condition.AbstractNestedCondition.getMatchOutcome(AbstractNestedCondition.java:62) ~[poc-graalvm-native.exe:na]
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:47) ~[poc-graalvm-native.exe:na]
... 18 common frames omitted
Caused by: java.io.FileNotFoundException: class path resource [org/springdoc/core/CacheOrGroupedOpenApiCondition$OnCacheDisabled.class] cannot be opened because it does not exist at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:180) ~[poc-graalvm-native.exe:na] at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:55) ~[na:na] at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:49) ~[na:na] at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:103) ~[na:na] at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:81) ~[na:na] at org.springframework.boot.autoconfigure.condition.AbstractNestedCondition$MemberConditions.getMetadata(AbstractNestedCondition.java:146) ~[poc-graalvm-native.exe:na]
... 22 common frames omitted
मेरी वर्तमान निर्भरताएं हैं:
dependencies {
implementation ('org.springframework.boot:spring-boot-starter-web') {
exclude group : 'org.apache.tomcat.embed', module : 'tomcat-embed-websocket'
}
implementation("org.springframework.boot:spring-boot-starter-actuator")
// Lombok
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
testCompileOnly("org.projectlombok:lombok")
testAnnotationProcessor("org.projectlombok:lombok")
// https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j
implementation('org.slf4j:jcl-over-slf4j:2.0.0-alpha1')
implementation('org.springdoc:springdoc-openapi-webmvc-core:1.4.4')
}
स्प्रिंगडॉक को जोड़ने तक सब कुछ ठीक चल रहा था। पहले से ही कुछ स्प्रिंगडॉक पैकेजों को जोड़ने की कोशिश की - बिना सफलता के बिना निर्माण के समय पर।
मैं com.github.ayltai.spring-graalvm-native-plugin का उपयोग कर रहा हूं, जो कि gradle कार्य को संभालने के लिए है और मेरी निर्भरताएं हैं:
dependencies {
implementation ('org.springframework.boot:spring-boot-starter-web') {
exclude group : 'org.apache.tomcat.embed', module : 'tomcat-embed-websocket'
}
implementation("org.springframework.boot:spring-boot-starter-actuator")
// Lombok
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
testCompileOnly("org.projectlombok:lombok")
testAnnotationProcessor("org.projectlombok:lombok")
// https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j
implementation('org.slf4j:jcl-over-slf4j:2.0.0-alpha1')
implementation('org.springdoc:springdoc-openapi-webmvc-core:1.4.4')
}
किसी भी संकेत की सराहना की जाएगी।
जवाब
फिलहाल, आधिकारिक स्प्रिंग ग्रेडल प्लगइन नहीं है, क्योंकि graalVM के साथ वसंत अनुप्रयोगों का एकीकरण अभी भी प्रायोगिक मोड में है और कई अन्य मुद्दों का सामना कर सकता है।
आपके द्वारा की जा रही त्रुटि, क्योंकि आपकी मूल कॉन्फ़िगरेशन छवि पूर्ण नहीं है।
आप स्प्रिंग-ग्रेवलम-देशी का उपयोग कर सकते हैं, जो स्प्रिंग टीम द्वारा समर्थित है, और जो स्प्रिंगडॉक-ओपेनपी के साथ एक आकर्षण की तरह काम करता है:
उपयोग सभी यहाँ समझाया गया है:
- https://repo.spring.io/milestone/org/springframework/experimental/spring-graalvm-native-docs/0.7.1/spring-graalvm-native-docs-0.7.1.zip!/reference/index.html#_guides
आप जिस वर्ग का उल्लेख कर रहे हैं, उसके लिए आपको रिफ्लेक्ट- config.json में होना चाहिए:
{
"name": "org.springdoc.core.CacheOrGroupedOpenApiCondition",
"methods": [
{
"name": "<init>",
"parameterTypes": []
}
]
}
और संसाधन-config.json पर:
{"pattern":"\\Qorg/springdoc/core/CacheOrGroupedOpenApiCondition$OnCacheDisabled.class\\E"}, {"pattern":"\\Qorg/springdoc/core/CacheOrGroupedOpenApiCondition$OnMultipleOpenApiSupportCondition.class\\E"},
{"pattern":"\\Qorg/springdoc/core/CacheOrGroupedOpenApiCondition.class\\E"}