[英]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.