簡體   English   中英

Jersey 2.x需要1.x庫嗎?

[英]Jersey 2.x Requires 1.x libs?

在解決我遇到的另一個問題時,我決定從Jersey 1.19升級到2.22.1,希望我所尋找的指導不適用於1.x,並且升級可以解決我的問題。

一路上我遇到了一個奇怪的問題。 我將maven依賴項升級到2.x並重新編譯。 那里沒有問題。 我可以在Jetty服務器中找到所有的運行時依賴項,但是有一件事我堅持了下來。 當我去運行一個簡單的GET時,我將獲得以下堆棧跟蹤:

    java.lang.ClassNotFoundException: com.sun.ws.rs.ext.RuntimeDelegateImpl
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at javax.ws.rs.ext.FactoryFinder.newInstance(FactoryFinder.java:62)
      at javax.ws.rs.ext.FactoryFinder.find(FactoryFinder.java:155)
      at javax.ws.rs.ext.RuntimeDelegate.findDelegate(RuntimeDelegate.java:105)
      at javax.ws.rs.ext.RuntimeDelegate.getInstance(RuntimeDelegate.java:91)
      at javax.ws.rs.core.EntityTag.<clinit>(EntityTag.java:35)
      at java.lang.Class.forName0(Native Method)
      at java.lang.Class.forName(Unknown Source)
      at sun.proxy.$Proxy21.<clinit>(Unknown Source)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at java.lang.reflect.Proxy.newInstance(Unknown Source)
      at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.createProxy(WebApplicationImpl.java:1592)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.<init>(WebApplicationImpl.java:320)
      at com.sun.jersey.server.impl.container.WebApplicationProviderImpl.createWebApplication(WebApplicationProviderImpl.java:55)
      at com.sun.jersey.spi.container.WebApplicationFactory.createWebApplication(WebApplicationFactory.java:66)
      at com.sun.jersey.spi.container.servlet.ServletContainer.create(ServletContainer.java:392)
      at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.create(ServletContainer.java:307)
      at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:603)
      at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
      at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
      at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)

僅供參考:這是一個非常准系統的設置。 只是帶有Jersey servlet容器的Jetty。

此類並未涉及2.22.1的依賴項,當我嘗試查找對它可能來自哪個jar的引用時,所有內容都指向jersey-bundle,它似乎不是org.glassfish下的jar。 .jersey.core。 在META-INF / services下的jersey-server-2.22.1.jar文件中有一個名為com.sun.ws.rs.ext.RuntimeDelegateImpl的文件,其中只有一行:org.glassfish.jersey.server .internal.RuntimeDelegateImpl

對於踢球,我將jersey-bundle-1.19.jar文件扔到了Web應用程序的庫中,中提琴! 我的(非常簡單)的應用程序像以前一樣工作。

我在這里的設置是否有些混亂? 我不明白為什么在jersey 2.x中有一個對Maven依賴項中未包含的類的引用。

我把球衣1.x罐子放到Jetty的擴展文件夾中,除了這一個罐子。 我也無法將web.xml中的servlet類更新為org.glassfish.jersey.servlet.ServletContainer。 這就是為什么我仍然得到1.x依賴的原因。

暫無
暫無

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

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