Рестлет в 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, потому что я думаю, что конфигурация будет настроена автоматически.