JVM-510037 Não é possível localizar a biblioteca dinâmica do Java.

Última atualização em 2023-02-16

Descrição

Ambiente

  • Campaign Classic v7

Problemas/sintomas
Caso de uso - Um problema foi relatado ao substituir o JDK do Oracle por Open JDK em instâncias do Campaign em execução no Windows.

No momento, o cliente tem o Oracle JDK v1.8.0.191 instalado em todas as instâncias do Windows Campaign. Ainda assim, depois de substituir o JDK do Oracle por Open JDK em uma de suas instâncias do Campaign, a WEB falhou ao iniciar com o seguinte erro:

JVM-510037 Cannot find the Java dynamic library. Check that a JDK or a JRE is installed on the machine. (iRc=-53)

No entanto, o Java é instalado corretamente com as variáveis de ambiente Path e JAVA_HOME certas.

Resolução

Para executar o módulo da Web, a biblioteca dinâmica da JVM deve estar visível para o Campaign. Ao remover o JDK do Oracle, a chave JavaSoft do registro do Windows é removida e qualquer referência a essa biblioteca da JVM também é perdida.

Há duas soluções para resolver esse problema:

Primeiro, você pode adicionar manualmente a chave JavaSoft ao registro do Windows em Computer\HKEY_LOCAL_MACHINE\SOFTWARE.

Veja um exemplo (com OpenJDK 1.8_292) do que é necessário adicionar:

Windows Registry Editor Version 5.00

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"CurrentVersion"="1.8""BrowserJavaVersion"="11.301.2"
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8"MicroVersion"="0""RuntimeLib"="C:\\Users\\perth\\Java\\openjdk-8u292-b10\\jre\\bin\\server\\jvm.dll""JavaHome"="C:\\Users\\perth\\Java\\openjdk-8u292-b10\\jre"
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.8.0_292"MicroVersion"="0""RuntimeLib"="C:\\Users\\perth\\Java\\openjdk-8u292-b10\\jre\\bin\\server\\jvm.dll""JavaHome"="C:\\Users\\perth\\Java\\openjdk-8u292-b10\\jre"

E a seguinte pasta de caminho foi adicionada à Caminho variável de ambiente.

C:\Users\perth\Java\openjdk-8u292-b10\bin

O módulo Web deve ser capaz de iniciar como esperado:

O segundo é que o uso de duas variáveis de ambiente do Windows pode ser definido para indicar onde o arquivo jvm.dll pode ser encontrado pelo módulo da Web.

As variáveis são:

  • USEENV=1
  • JVMLIBDIR=o caminho do arquivo jvm.dll

Veja um exemplo:

Observe que o uso do JVMLIBDIR estará visível do log se o log detalhado estiver ativado no módulo da Web.

Nesta página