Запуск Джерси с Гризли в качестве исполняемого файла JAR не работает - PullRequest
0 голосов
/ 28 апреля 2011

Я разработал приложение на основе Джерси и использовал Grizzly для тестирования приложения. Пока я запускаю его из Eclipse, все работает хорошо! Тем не менее, когда я делаю экспорт в работающий Jar и выполняю в командной строке Windows 7, я последовательно получаю сообщение об ошибке ниже: Мой основной метод указан, что я пропустил. (Спасибо за помощь)

private static final String PORT="8899";
private static final String MACHINE="http://localhost";
private static final String MAIN_PACKAGE="aklero.idea.persistence";
private static final String JERSEY_PACKAGE="com.sun.jersey.config.property.packages";
private static final String MACHINE_URI=MACHINE+":"+PORT+"/";

public static void main(String[] args) throws IOException
{
    final String baseUri = MACHINE_URI;
    final Map<String, String> initParams = new HashMap<String, String>();      
    initParams.put(JERSEY_PACKAGE, MAIN_PACKAGE);
    System.out.println("Starting grizzly...");
    SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);
    System.in.read();
    threadSelector.stopEndpoint();
    System.exit(0);         
}

Ошибки, которые я получаю:

SEVERE: Экземпляр ResourceConfig не содержит корневых классов ресурсов.

28 апреля 2011 г. 12:42:56 com.sun.grizzly.http.servlet.ServletAdapter doService

SEVERE: исключение службы:

com.sun.jersey.api.container.ContainerException: экземпляр ResourceConfig не

содержит любые корневые классы ресурсов.

на com.sun.jersey.server.impl.application.RootResourceUriRules.

(RootResourceUriRules.java:103)

Ответы [ 2 ]

0 голосов
/ 31 января 2012

У меня была такая же проблема. Решение заключается в добавлении файлов ресурсов вручную.

Измените 2 переменные:

private static final String MAIN_PACKAGE = "yourpackage2.MyApplication";
private static final String JERSEY_PACKAGE = "javax.ws.rs.Application";

и создайте этот файл:

package yourpackage2;

import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;

public class MyApplication extends Application {
    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();
        s.add(yourpackage1.ResourceClass1.class);
        //s.add(...); and so on
        return s;
    }
}

При создании вашего jar в eclipse активируйте переключатель "Упаковать необходимые библиотеки в сгенерированный JAR"

Если вы используете другие jar-файлы, включите их в путь к классам при запуске вашей программы. Просто с: java -cp ./DIR1;./DIR2;./DIR3 -jar myJAR.jar

0 голосов
/ 16 мая 2011

Видимо, это как-то связано с опциями экспорта Eclipse.

http://jersey.576304.n2.nabble.com/Cant-get-Jersey-running-in-embedded-Grizzly-td2915843.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...