簡體   English   中英

如何修復“java.lang.NoClassDefFoundError:無法初始化類com.mongodb.MongoClientOptions”

[英]How to fix "java.lang.NoClassDefFoundError: Could not initialize class com.mongodb.MongoClientOptions"

我正在嘗試將 REST API(Java 制造,使用 Maven,在 Eclipse 中)從自己的服務器遷移到合作伙伴的服務器。 他們在那里為我們安裝了 Tomcat 9 和 Mongo 3.6.17(我幾乎無法控制它,但如果真的需要,我可以看到安裝更新/其他版本)。 我遇到了很多不兼容的問題,但找不到解決以下問題的方法。

在遠程服務器上調用任何端點時,我收到以下錯誤(您可以看到我正在使用 Jersey):

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)

我從網上閱讀的內容了解到 mongo Java 驅動程序存在不兼容問題。 根據我找到的兼容性表,我對 Mongo 驅動程序版本做了很多更改,但沒有運氣。 目前設置為:

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

在我的項目的 pom.

作為參考,我們使用 Tomcat 9 和 Mongo v4.0.9 - 但即使在我們的構建中更改驅動程序版本,服務仍然可以順利運行(例如使用上面的 v3.6.2 時),無論是在我們的服務器上(Linux,不知道規格,我明天可以更新)以及當我在本地計算機(Windows)上通過 eclipse 運行該服務時。 遠程服務器在 CentOS 7.6.1810 上運行並安裝了 OpenJDK v1.8.0_242。 相反,我們有 Oracle JDK 8(本地機器和服務器上的版本略有不同 - 在本地,我運行 1.8.0_91)。

有任何想法嗎?

我無法根據 java 驅動程序版本解決它。 相反,我要求更新 Mongo(4.0.9)並且它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM