Como determinar se uma JNI (JOGL) está disponível em tempo de execução?
-
05-07-2019 - |
Pergunta
Eu estou trabalhando em um código-fonte de visualização do projeto que utiliza o processando biblioteca central. A biblioteca de processamento tem a opção de usar a biblioteca OpenGL JOGL para renderizar gráficos que realmente melhora o desempenho. No entanto, os arquivos JNI que usa JOGL não estão necessariamente disponíveis em tempo de execução, dependendo de quem está usando o projeto e em que plataforma.
Atualmente só temos o usuário especificar se querem usar OpenGL, mas, obviamente, seria muito melhor se pudéssemos usar OpenGL por padrão e só cair de volta para o processamento de software quando ele não está disponível. As bibliotecas de processamento não parecem fazer isso fácil, você é supor somente especificar um renderizador de uma vez, e mudança prestadores dá ... comportamento novela.
Qualquer idéia de como descobrir se os JNIs necessárias para JOGL estão disponíveis e funcionando em tempo de execução?
Solução
Simples apenas tentar carregar a classe com o seu ClassLoader usando loadClass e pegar uma excepção ClassNotFound e UnsatisfiedLinkError para fazer a funcionalidade de reserva.
Outras dicas
A outra maneira pura para se certificar de que você começa a usar Jogl é implantar via JNLP. Você pode incluir Jogl como uma dependência remoto eo Java lançador vai buscar automaticamente a versão nativa apropriada.