Как исправить «java .lang.NoClassDefFoundError: Не удалось инициализировать класс com.mongodb.MongoClientOptions» - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь перенести REST API (Java, созданный с использованием Maven в Eclipse) с собственного сервера на сервер партнера. Они установили Tomcat 9 и Mon go 3.6.17 для нас (у меня есть небольшой контроль над этим, но если действительно нужно, я могу видеть для установки более новых / других версий). У меня было много проблем несовместимости, но я не могу найти решение для следующего.

При вызове любой конечной точки на удаленном сервере я получаю следующую ошибку (вы можете видеть, что я использую Джерси):

javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class com.mongodb.MongoClientOptions
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

Я понимаю из того, что я читаю онлайн, что есть проблема несовместимости с драйвером mon go Java. Я сделал много изменений в версии драйвера Mon go, основываясь на найденных таблицах совместимости, но не повезло. В настоящее время он установлен на:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.6.2</version>
</dependency>

в помпе моего проекта.

Для справки мы используем Tomcat 9 и Mon go v4.0.9 - но даже с изменением версии драйвера в В нашей сборке службы по-прежнему работают нормально (например, при использовании версии 3.6.2 выше) как на нашем сервере (Linux, не знаю спецификаций, я могу обновить завтра), так и когда я запускаю службу через eclipse на моей локальной машине (Windows). Удаленный сервер работает на CentOS 7.6.1810 и на нем установлен OpenJDK v1.8.0_242. И наоборот, у нас есть Oracle JDK 8 (несколько разные версии на локальном компьютере и сервере - локально, я запускаю 1.8.0_91).

Есть идеи?

1 Ответ

0 голосов
/ 14 февраля 2020

Я не могу разрешить его, основываясь на java версиях драйверов. Вместо этого я попросил обновить Mon go (4.0.9), и это сработало.

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