Quarkus K8S 操作员 - 运行测试时没有此类字段异常
Quarkus K8S operator - NoSuchField execption when runnin tests
当我 运行 使用 quarkus 运算符对我的 K8S 运算符进行测试时,我得到以下堆栈跟踪:
2021-10-29 18:14:08,668 WARN [io.qua.ope.dep.OperatorSDKProcessor] (build-33) Use of deprecated check-crd-and-validate-local-model property. Use crd.validate instead.
java.lang.RuntimeException: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor#createConfigurationServiceAndOperator threw an exception: java.lang.NoSuchFieldError: _visitables
at io.sundr.model.ClassRefFluentImpl.withArguments(ClassRefFluentImpl.java:318)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:114)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:76)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:41)
at io.sundr.adapter.reflect.ClassToTypeDef.apply(ClassToTypeDef.java:92)
at io.sundr.adapter.reflect.ClassToTypeDef.apply(ClassToTypeDef.java:55)
at io.sundr.adapter.api.Adapter.adaptType(Adapter.java:38)
at io.sundr.adapter.api.Adapters.lambda$adaptType[=10=](Adapters.java:35)
at java.base/java.util.Optional.map(Optional.java:265)
at io.sundr.adapter.api.Adapters.adaptType(Adapters.java:35)
at io.fabric8.crd.generator.utils.Types.typeDefFrom(Types.java:53)
at io.fabric8.crd.generator.CustomResourceInfo.fromClass(CustomResourceInfo.java:137)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.createControllerConfiguration(OperatorSDKProcessor.java:281)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.lambda$createConfigurationServiceAndOperator[=10=](OperatorSDKProcessor.java:133)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:177)
at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.createConfigurationServiceAndOperator(OperatorSDKProcessor.java:137)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.quarkus.deployment.ExtensionLoader.execute(ExtensionLoader.java:820)
at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
at org.jboss.threads.ContextHandler.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at java.base/java.lang.Thread.run(Thread.java:829)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
...
我真的不知道去哪里解决这个问题。
当我运行运营商作为一个独立的,它工作正常,问题只是在运行宁测试时。
您使用的 fabric8 客户端版本似乎太旧了。您使用的是 fabric8 5.3.0,而 quarkus-operator-sdk 版本 1.9.4 使用的是 fabric8 5.4.0。使用相同的 fabric8 客户端版本应该可以解决您的问题。
问题来自我的 maven 版本:我在 v3.6.3 中使用与我的 IDE 捆绑在一起的 mvn,而不是我在整个系统 v3.8.1 中使用的那个。
这里非常奇怪的是,我在从终端运行 mvn clean install
时遇到了同样的错误(因此使用 v3.8.1 版本)
无论如何,现在可以了。
当我 运行 使用 quarkus 运算符对我的 K8S 运算符进行测试时,我得到以下堆栈跟踪:
2021-10-29 18:14:08,668 WARN [io.qua.ope.dep.OperatorSDKProcessor] (build-33) Use of deprecated check-crd-and-validate-local-model property. Use crd.validate instead.
java.lang.RuntimeException: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor#createConfigurationServiceAndOperator threw an exception: java.lang.NoSuchFieldError: _visitables
at io.sundr.model.ClassRefFluentImpl.withArguments(ClassRefFluentImpl.java:318)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:114)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:76)
at io.sundr.adapter.reflect.TypeToTypeRef.apply(TypeToTypeRef.java:41)
at io.sundr.adapter.reflect.ClassToTypeDef.apply(ClassToTypeDef.java:92)
at io.sundr.adapter.reflect.ClassToTypeDef.apply(ClassToTypeDef.java:55)
at io.sundr.adapter.api.Adapter.adaptType(Adapter.java:38)
at io.sundr.adapter.api.Adapters.lambda$adaptType[=10=](Adapters.java:35)
at java.base/java.util.Optional.map(Optional.java:265)
at io.sundr.adapter.api.Adapters.adaptType(Adapters.java:35)
at io.fabric8.crd.generator.utils.Types.typeDefFrom(Types.java:53)
at io.fabric8.crd.generator.CustomResourceInfo.fromClass(CustomResourceInfo.java:137)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.createControllerConfiguration(OperatorSDKProcessor.java:281)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.lambda$createConfigurationServiceAndOperator[=10=](OperatorSDKProcessor.java:133)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:177)
at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.quarkiverse.operatorsdk.deployment.OperatorSDKProcessor.createConfigurationServiceAndOperator(OperatorSDKProcessor.java:137)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.quarkus.deployment.ExtensionLoader.execute(ExtensionLoader.java:820)
at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
at org.jboss.threads.ContextHandler.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
at java.base/java.lang.Thread.run(Thread.java:829)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
...
我真的不知道去哪里解决这个问题。
当我运行运营商作为一个独立的,它工作正常,问题只是在运行宁测试时。
您使用的 fabric8 客户端版本似乎太旧了。您使用的是 fabric8 5.3.0,而 quarkus-operator-sdk 版本 1.9.4 使用的是 fabric8 5.4.0。使用相同的 fabric8 客户端版本应该可以解决您的问题。
问题来自我的 maven 版本:我在 v3.6.3 中使用与我的 IDE 捆绑在一起的 mvn,而不是我在整个系统 v3.8.1 中使用的那个。
这里非常奇怪的是,我在从终端运行 mvn clean install
时遇到了同样的错误(因此使用 v3.8.1 版本)
无论如何,现在可以了。