2015-05-18 2 views
4

Итак, я создал веб-сервис в this thread и, наконец, мне удалось решить проблему. Теперь я пытаюсь использовать этот веб-сервис.Restful webservices - NoClassDefFoundError: org/glassfish/jersey/ExtendedConfig

Я создал новый веб-проект в Netbeans, и я использую Apache Tomcat. Вот код для использования веб-сервиса. Я прочитал некоторые уроки для создания этого кода.

package com.client; 

import java.net.URI; 

import javax.ws.rs.client.Client; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.core.UriBuilder; 

import org.glassfish.jersey.client.ClientConfig; 

public class HelloClient { 


    public void consumeRest(){ 

    ClientConfig config = new ClientConfig(); 

    Client client = ClientBuilder.newClient(config); 

    WebTarget target = client.target(getBaseURI()); 

    System.out.println("response"); 

    System.out.println(target.path("hello").path("world").request() 

    .accept(MediaType.APPLICATION_JSON).get(Response.class) 

    .toString()); 

    } 


    private URI getBaseURI() { 

    return UriBuilder.fromUri("http://localhost:8084/restful_example").build(); 

    } 

} 

Я создал основной класс для вызова метода потребления. Когда я бегу, я получаю это исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/jersey/ExtendedConfig 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at com.client.HelloClient.consumeRest(HelloClient.java:29) 
    at com.client.main.main(main.java:16) 
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.ExtendedConfig 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 14 more 
Java Result: 1 

Я предполагаю, что это проблема ЛИЭС, но я не мог решить. Недостаточно использовать только JAX-RS 2.0, поэтому я также использую Jersey libs.

Что здесь не так? Правильно ли это использовать этот веб-сервис? Я видел некоторые другие версии, и я не уверен, какой из них использовать.

+0

вы используете Maven? –

+0

Нет, я никогда не использовал maven – user3641702

+0

Вы добавили файл jar внутри каталога lib домена? –

ответ

0

Как я и предполагал, это была проблема с libs. Этот код и этот импорт работают только с Jersey 2.X (это на версии 2.17 на сегодняшний день). Мне нужно было включить все библиотеки в комплект, т. Е. Все ядро ​​модуля ядра Джерси, а также все необходимые зависимости от сторонних разработчиков. Мне не нужно включать JAX-RS 2.0 libs или Jersey 1.X.

Еще одна вещь, которую я сделал, - это использование мастера создания нового клиента RESTful Java NetBeans, а затем добавление банок Jersey 1.X к моему проекту (это на сегодняшний день версия 1.19). API немного отличается, но работает.

0

Чтобы удалить конкретное сообщение:

NoClassDefFoundError: org/glassfish/jersey/ExtendedConfig 

Попробуйте включить правильную версию Джерси-common.jar в Lib папку приложения.

6

Кажется, что вам не хватает jersey-common банку с вашего пути к классам

Вы можете скачать баночку на мавена в следующем url: - http://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-common

+0

... и убедитесь, что это управляемая зависимость от родителя, что область не является «тестом», которую я упустил, несмотря на наличие банки. –

Смежные вопросы