Java

Spring Tool Suite: Failed to load the JNI shared library

Este tutorial irá mostrar como resolver o erro “Failed to load the JNI shared library” durante a inicialização do Spring Tool Suite.

O erro “Failed to load the JNI shared library” geralmente é causado por dois motivos:

  1. O tipo de arquitetura (32 ou 64 bits) entre seu Java e seu Spring Tool Suite são incompatíveis;
  2. Seu STS.ini está apontando para o diretório home do Java ao invés de apontar para o executável do Java.

Vamos explorar a solução para os dois casos:

Tipo de arquitetura (32 ou 64 bits) incompatível

A JDK e o STS são disponibilizados em duas arquiteturas, 32 and 64 bits, então a regra é utilizar versões compatíveis, de modo que ambas aplicações sejam 32 bits (em computadores 32 e 64 bits) ou 64 bits (exclusivo para computadores 64 bits). Portanto, caso as versões sejam diferentes, é bem possível que seu ambiente não irá funcionar como esperado.

Para verificar a versão do seu Java, execute o comando abaixo para imprimir a versão exata (64 bits no meu caso) conforme destacado na última linha:

C:\Users\bgasparotto>java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Quanto a versão do Spring Tool Suite, verifique qual versão você baixou do site, mas caso você não tiver certeza, o nome do arquivo segue um padrão onde versões 64 bits incluem x86_64 como parte do nome do arquivo, enquanto que versões 32 bits não incluem esse detalhe. Na imagem abaixo podemos ver que o primeiro arquivo é de uma versão 32 bits, enquanto que o segundo é 64 bits:

STS.ini não apontando para o executável do Java

O Spring Tool Suite é uma ferramenta baseada no Eclipse, logo, o STS possui um arquivo chamado STS.ini para configurar sua inicialização de forma semelhante que o Eclipse possui o seu eclipse.ini. Sendo assim, este arquivo de configuração está presente no mesmo diretório onde encontramos o arquivo STS.exe, que em sua forma padrão se parece com o seguinte:

-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.550.v20170928-1359
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Xverify:none
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx1200m

Com isso, é possível que o caminho da JRE esteja definido de forma errada no arquivo, especificando somente a pasta home do Java ao invés de corretamente especificar o executável do Java javaw.exe:

...
-vm
C:\Users\bgasparotto\Documents\Java\jdk1.8.0_121\bin
-vmargs
...

Para corrigir isto, adicione a parte que falta conforme descrito acima:

...
-vm
C:\Users\bgasparotto\Documents\Java\jdk1.8.0_121\bin\javaw.exe
-vmargs
...

Agora tudo deve funcionar normalmente.
Por favor, me informe se por algum motivo as soluções acima não funcionaram com você, para que eu possa te ajudar =]

Referências

bgasparotto

Recent Posts

Python function decorator

This guide will show you how to create a Python function decorator with a few…

2 years ago

Got permission denied while trying to connect to the Docker daemon socket

This guide will show you how to fix the error Got permission denied while trying…

2 years ago

Python virtual environment on Intellij IDEA

This guide will show you how to create a Python virtual environment on Intellij IDEA…

2 years ago

Find and kill processes on Linux and Mac by port number

This tutorial will quickly show you how to to find and kill processes on Linux,…

2 years ago

Python: Relocation R_X86_64_PC32 against symbol can not be used when making a shared object Error

This guide shows a possible solution for Python error Relocation R_X86_64_PC32 against symbol can not…

2 years ago

Kubernetes useful commands

I condensed below a cheat sheet of Kubernetes useful commands. I will keep updating this…

2 years ago