Erro [com.mongodb.MongoException: java.lang.NoClassDefFoundError: jdk/net/ExtendedSocketOptions]

Olá pessoal eu estou tentando fazer a conexão a base mongodb levantado pelo docker que eu criei. Consigo conectar normalmente pelo robo/compass porém ao tentar pelo driver do java não está funcionando seque os erros:

INFO  org.mongodb.driver.cluster - Exception in monitor thread while connecting to server "ip do meu server"
com.mongodb.MongoException: java.lang.NoClassDefFoundError: jdk/net/ExtendedSocketOptions
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:157)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:144)
	at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.NoClassDefFoundError: jdk/net/ExtendedSocketOptions
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.SocketStreamHelper.setExtendedSocketOptions(SocketStreamHelper.java:83)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:53)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65)
	at org.mongodb.driver.core@4.1.1/com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:143)

segue as minhas dependências:

Eu cheguei a ver que poderia ter algo relacionado a falta de drivers. Porém já fiz diversas atualização de drivers trazendo exatamento o que vi no tutorial e ainda sim está gerando o mesmo erro. Alguem poderia me ajudar? Agradeço desde já

vc nao trocou o ip, deixou escrito isso aí “ip do meu server”.

Caso não consiga arrumar, mostra o código aqui.

Eu coloquei isso para não mostrar o meu ip (está com o ip que eu defini não a string). Mas garanto que funciona ele conforme informei como no robo e no compass.

então mostra o codigo

ata, não vi isso, vc não importou essa lib… Ce ta usando o JDK15??

MongoClient mongo = MongoClients.create("meu ip");
		MongoIterable<String> dbNames = mongo.listDatabaseNames(); 
		for(String dbName : dbNames) {
			System.out.println(dbName);
		}

estou usando o JDK 14

blz, vc importou esse modulo: jdk.net?

1 curtida

No arquivo que estou fazendo a conexão? se for ele não. os imports estão da seguinte maneira:

import org.bson.Document;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoIterable;

Editei o arquivo:
module-info.java
adicionando a seguinte linha:
requires java.net;

Putz esquece o que falei. Importei o modulo e funcionou. Muito obrigado Abner. Sabe me informar o porque não informam isso? é algo específico?

1 curtida

boa, era isso mesmo!

Também não sei o porquê não informam que é o módulo, e não a falta da lib em si…

Mas acredito que por isso ser padrão desde a versão 9, virou meio que costume pra os usuários, ainda mais por ser classes direto do JDK.

Entendi eu n programo java desde 2012. primeira vez usando o maven ai n sabia disso. Valeu!

1 curtida

Mudou bastante mesmo desde a versão 8, também não acostumei ainda kkkkkk