Я пытаюсь интегрировать вызов джерси в стиле приветствия в существующее приложение, используя grizzly2.Класс несовместимости при попытке запуска трикотажа внутри гризли?
Я добавил эту зависимость к моему Maven ПОМ:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
<version>2.22.1</version>
</dependency>
, который производит это дерево зависимостей:
[INFO] +- org.glassfish.jersey.containers:jersey-container-grizzly2-http:jar:2.22.1:compile
[INFO] | +- org.glassfish.hk2.external:javax.inject:jar:2.4.0-b31:compile
[INFO] | +- org.glassfish.grizzly:grizzly-http-server:jar:2.3.23:compile
[INFO] | | \- org.glassfish.grizzly:grizzly-http:jar:2.3.23:compile
[INFO] | | \- org.glassfish.grizzly:grizzly-framework:jar:2.3.23:compile
[INFO] | +- org.glassfish.jersey.core:jersey-common:jar:2.22.1:compile
[INFO] | | +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] | | +- org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.22.1:compile
[INFO] | | +- org.glassfish.hk2:hk2-api:jar:2.4.0-b31:compile
[INFO] | | | +- org.glassfish.hk2:hk2-utils:jar:2.4.0-b31:compile
[INFO] | | | \- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.4.0-b31:compile
[INFO] | | +- org.glassfish.hk2:hk2-locator:jar:2.4.0-b31:compile
[INFO] | | | \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] | | \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
[INFO] | +- org.glassfish.jersey.core:jersey-server:jar:2.22.1:compile
[INFO] | | +- org.glassfish.jersey.core:jersey-client:jar:2.22.1:compile
[INFO] | | +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.22.1:compile
[INFO] | | \- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] | \- javax.ws.rs:javax.ws.rs-api:jar:2.0.1:compile
[INFO] \- junit:junit:jar:4.12:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
Я пытаюсь воспитать гризли следующим образом:
private static final URI BASE_URI = URI.create("http://localhost:8080/base/");
public static final String ROOT_PATH = "helloworld";
public static void main(String[] args) throws IOException, InterruptedException
{
System.out.println("\"Hello World\" Jersey Example App");
final ResourceConfig resourceConfig = new ResourceConfig(RestTest.class);
final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(BASE_URI, resourceConfig, false);
Но это приводит к ошибке, которая указывает неверно подобранный набор файлов jar:
Exception in thread "main" java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.PropertiesHelper.getValue(Ljava/util/Map;Ljavax/ws/rs/RuntimeType;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
at org.glassfish.jersey.moxy.json.MoxyJsonFeature.configure(MoxyJsonFeature.java:60)
at org.glassfish.jersey.model.internal.CommonConfig.configureFeatures(CommonConfig.java:714)
at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:644)
at org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829)
at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453)
at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:311)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.<init>(GrizzlyHttpContainer.java:337)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:140)
at gov.vha.isaac.demo.RestMain.main(RestMain.java:20)
Я пытался заставить нарушителя баночку (Джерси-общий) для различных различных версий, но все они не так же, как (или хуже, если я вернусь к далеко)
Я пробовал разные версии grizzly - но единственная версия, которую я могу начать, - настолько старая, что теперь я сталкиваюсь с проблемами с несоответствием версии HK2 между гризли и другим кодом.
Как можно смириться с миром гризли?
Или может кто-то указать мне на глупую вещь, которую я делаю неправильно?
Только одна зависимость не приведет к этой ошибке. Есть другие зависимости, которые вы нам не показываете. В общем, сохраняйте все версии зависимости от Джерси одинаковыми. Эта проблема, скорее всего, вызвана различными зависимостями версии Джерси. –
Если вы хотите создать проект из архетипа Maven, см. [Здесь] (https://jersey.java.net/documentation/latest/getting-started.html#new-from-archetype). Это даст вам бесплатное приложение. –
Я буду обновлять завтра, но, выбив другую зависимость из моего проекта, я, наконец, дошел до точки, где он будет работать. Есть и другая библиотека, которую я включил, что было каким-то образом - привело к этому исключению - хотя я еще не знаю, как ... поскольку у меня нет других зависимостей от класса, у которого была неправильная версия. Переход к завершению прохождения дерева зависимостей и запрещение до тех пор, пока я не выясню, какая конкретная библиотека вызывает несовместимость. – user2163960