簡體   English   中英

帶有平針織物的HK2InjectionManager,使用OpenJDK11進行升級

[英]HK2InjectionManager with jersey, upgrading with OpenJDK11

因為我正在升級jdk11和澤西,所以遇到一些錯誤,但這個特別難過。 因此,據說球衣2.28與OpenJDK11兼容並修復了之前在2.25.1中的一些問題,所以我升級了它

我也看到了這個,而不是一個有效的解決方案 - Jersey Spring Maven java.lang.NoClassDefFoundError:org / glassfish / jersey / hk2 / HK2InjectionManager

在我的gradle構建中,此任務失敗:

> Task :ods-impl:test FAILED

根據我的任務,這里是依賴項列表

    compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '2.28'
    compile group: 'org.glassfish.jersey.ext', name: 'jersey-spring3', version: '2.26-b03'
    compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '2.28'
    compile group: 'org.glassfish.jersey.media', name: 'jersey-media-multipart', version: '2.28'
    compile group: 'commons-lang', name: 'commons-lang', version: property('rev.commons-lang')

所以我遇到了一個新的錯誤

java.lang.NoClassDefFoundError: org/glassfish/jersey/hk2/HK2InjectionManager

    at org.glassfish.jersey.server.spring.SpringComponentProvider.initialize(SpringComponentProvider.java:112)
    at org.glassfish.jersey.server.ComponentProviderConfigurator.lambda$null$0(ComponentProviderConfigurator.java:55)
    at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:441)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
    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 org.glassfish.jersey.server.ComponentProviderConfigurator.lambda$init$1(ComponentProviderConfigurator.java:56)
    at org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:317)
    at org.glassfish.jersey.server.ResourceModelConfigurator.bindProvidersAndResources(ResourceModelConfigurator.java:111)
    at org.glassfish.jersey.server.ResourceModelConfigurator.init(ResourceModelConfigurator.java:63)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:341)
    at org.glassfish.jersey.server.ApplicationHandler.lambda$initialize$1(ApplicationHandler.java:292)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:232)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:291)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:258)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:245)
    at org.glassfish.jersey.jetty.JettyHttpContainer.<init>(JettyHttpContainer.java:445)
    at org.glassfish.jersey.jetty.JettyHttpContainerProvider.createContainer(JettyHttpContainerProvider.java:37)
    at org.glassfish.jersey.server.ContainerFactory.createContainer(ContainerFactory.java:58)
    at org.glassfish.jersey.jetty.JettyHttpContainerFactory.createServer(JettyHttpContainerFactory.java:135)
    at org.glassfish.jersey.test.jetty.JettyTestContainerFactory$JettyTestContainer.<init>(JettyTestContainerFactory.java:68)
    at org.glassfish.jersey.test.jetty.JettyTestContainerFactory$JettyTestContainer.<init>(JettyTestContainerFactory.java:45)
    at org.glassfish.jersey.test.jetty.JettyTestContainerFactory.create(JettyTestContainerFactory.java:126)
    at org.glassfish.jersey.test.JerseyTest.createTestContainer(JerseyTest.java:254)
    at org.glassfish.jersey.test.JerseyTest.setUp(JerseyTest.java:584)
    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 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.hk2.HK2InjectionManager
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 54 more

所以我添加了這個依賴:

compile group: 'org.glassfish.jersey.inject', name: 'jersey-hk2', version: '2.28'

但是,我仍然遇到相同的錯誤消息,依賴關系是如何匹配的? 我看到它在IntelliJ中解決了hk2

在此輸入圖像描述

進一步挖掘我注意到SpringComponentProvider上的HK2InjectionManager從錯誤的路徑導入而不是從Hk2依賴的位置導入

來自澤西島的正確路徑:import org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;

Spring的路徑:import org.glassfish.jersey.hk2.HK2InjectionManager;

結果是jersey-spring3已經過時了。 如果你想使用帶有Spring的2.27+ Jersey,但是使用jersey-spring4來改變依賴性

compile group: 'org.glassfish.jersey.ext', name: 'jersey-spring4', version: '2.28'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM