Restlet в OSGi для не можете найти на COM/солнце/сеть/сервер http/обработчик HttpHandler


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

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 2

1 ответ:

Я нашел решение в ответе, опубликованном здесь.

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

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

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