Рестлет в OSGI не может найти com/sun/net/httpserver/HttpHandler

Я пытаюсь использовать Restlet во встроенной среде OSGi. Я добавил org.restlet.jar версии 2.3.0 в путь к классу моего теста рестлета. Но это продолжало давать мне следующую ошибку.

java.lang.NoClassDefFoundError: com/sun/net/httpserver/HttpHandler

В документации сказано, что этой банки должно быть достаточно, но в настоящее время она не работает. Пакет запускается с помощью Equinox Framework, который запускается автономным модулем запуска, который впоследствии будет использоваться вне среды Eclipse.

Есть ли еще одна фляга, которую я должен добавить, чтобы получить правильный соединитель сервера? Я не буду использовать сервлеты, поэтому единственными вариантами являются разъемы Restlet.

Когда я запускаю пакет вручную, я получаю следующее предупреждение:

WARNING: No available server connector supports the required protocols: 'HTTP' . Please add the JAR of a matching connector to your classpath.

Я уже потратил много времени, чтобы заставить его работать без удачи. Заранее спасибо!

1 ответ

Решение

Я нашел решение в ответе, размещенном здесь.

Поэтому пакет com.sun.net.httpserver (который является частью JDK) должен быть открыт для среды OSGi. Лучшее решение, которое сработало для меня, - это показать его через системный пакет во время запуска платформы, добавив его в следующее свойство:

org.osgi.framework.system.packages.extra = com.sun.net.httpserver

Если вы используете Restlet в среде OSGi с использованием пользовательского средства запуска платформы, добавление вышеуказанного решения сделает пакет доступным для импорта. Я думаю, что они должны были добавить эту информацию в свою документацию. Эта проблема не возникает, если Restlet установлен в Eclipse и используется непосредственно в среде Eclipse с использованием средства запуска Eclipse, потому что я думаю, что конфигурация будет настроена автоматически.

Другие вопросы по тегам