2016-04-06 35 views
-1

İnternet yok çünkü maven yerine jar dosyaları kullanıyorum.json dönüşüm json kullanarak

Sorun: jax-rs forması uygulamam kullanıyorum. JSON için java dönüştürmek gerekir ancak aşağıdaki hatayı veriyor

java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljavax/ws/rs/RuntimeType;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; 
at org.glassfish.jersey.moxy.json.MoxyJsonFeature.configure(MoxyJsonFeature.java:67) 
at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:730) 
at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:648) 
at org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829) 
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453) 
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184) 
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350) 
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255) 
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347) 
at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:392) 
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177) 
at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:369) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1236) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1041) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4910) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5192) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1387) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 

i kullanıyorum kodudur:

package entity; 

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Res { 

    @XmlElement int id; 
    @XmlElement String name; 
    public Res() { 
    } 
    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

:

package mypack; 

import javax.websocket.server.PathParam; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import org.glassfish.jersey.server.BackgroundScheduler; 

import entity.Res; 

@Path("/s") 
public class webapi { 

    @GET 
    @Path("q/{name}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Res method(@PathParam("name") String name){ 
     try{ 
      Res r = new Res(); 
      r.setId(5); 
      r.setName(name); 
      return r; 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
      return null; 
     } 
    } 

} 

res sınıf olarak izleyin Kullanmakta olduğum jar dosyaları şunlardır:

image of jar files i have embedded

web.xml dosyasıdır:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 

<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>mypack</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

hata nedeni nedir?

+1

Bu hata normalde sürüm uyuşmazlığı nedeniyle oluşur. Lütfen aynı sürümün jersey jar'larını kullanıp kullanmadığınızı doğrulayın. –

+1

'jersey-media-moxy-2.3.jar' hatasının hatayı size bağlı olabilir. Çıkarmayı dene. –

cevap

1

jar Sürümleri ile ilgili bir sorun olabileceğini düşünüyorum. Projenizde kullandığınız kavanoz Older Sürüm. Lütfen, hatayı gördüğüm ve tahmin ettiğim gibi jersey bağımlılığını güncellemek için lütfen lib'nu güncelleyin.

Ben senin bağımlılık Says gibi Sürüm 2.7 yerine 2.2 veya 2.3 ait en az jars eklemek öneririm.

Lütfen lib Klasörünüzü Güncelleyin, ardından Projenizi Temizleyin.

Projenizi yeniden oluşturun. lib'unuzu Yeni jar Dosyaları ile güncelledikten sonra.

Teşekkür ederiz

+0

Sürüm sorunları hakkında haklı olabilirsiniz, ancak sorular başlangıçta maven kullanmadığını söylüyor. – andrepnh

+0

@andrepnh Teşekkürler Cevabımı Kullanıcı Proje Yapısı'na göre güncelledim. Tekrar teşekkürler. –

+0

Herkese teşekkürler! Fakat Jersey medyası için sanırım en son versiyon. ben. e. 2.3. Eğer yanlış varsa bana en son sürümü linki verin – Sarvesh