Como definir o java.library.path no Eclipse


209

Como definir o java.library.pathprojeto Eclipse inteiro? Estou usando uma biblioteca Java que depende de arquivos específicos do SO e preciso encontrar um .dll/ .so/ .jnilib. Mas o Aplicativo sempre sai com uma mensagem de erro informando que esses arquivos não foram encontrados no caminho da biblioteca.

Eu gostaria de configurar todo esse projeto para usar o caminho da biblioteca. Tentei adicionar o caminho como argumento da VM a algumas configurações de execução no eclipse, mas isso não funcionou.


1
Eu fiz isso adicionando-o como um argumento de VM e funcionou. Como exatamente você fez isso?
Michael Myers

Respostas:


297

Não mexa com o caminho da biblioteca! O Eclipse constrói ele mesmo!

Em vez disso, acesse as configurações da biblioteca de seus projetos e, para cada jar / etc que requer uma biblioteca nativa, expanda-a na guia Bibliotecas . Na visualização em árvore, cada biblioteca possui itens para os locais de origem / javadoc e de biblioteca nativa.

Especificamente: selecione Project, clique com o botão direito do mouse -> guia Propriedades / Caminho de Construção Java / Bibliotecas , selecione um .jar, expanda-o, selecione Local da biblioteca nativa , clique em Editar , a caixa de diálogo do seletor de pastas será exibida)

Brincar com o caminho da biblioteca na linha de comandos deve ser seu último esforço, porque você pode quebrar algo que já está definido corretamente pelo eclipse.

Local da biblioteca nativa


6
Mas como isso funciona se você tiver mais de uma pasta para adicionar?
Dan

2
Esta é uma boa pergunta. Por que você tem mais de uma pasta de bibliotecas nativas para um jar? Tenho certeza de que existe uma maneira de incorporar as bibliotecas nativas no jar, para que possa ser o caminho a seguir?
John Gardner

1
Estou trabalhando em um projeto legado sobre o qual tenho muito pouco controle. Certamente não posso mudar a estrutura do projeto. Minha solução no momento é colocar tudo no meu caminho - mas isso não é tão legal.
Dan

1
dependendo do sistema operacional, você pode criar um diretório com todos os links simbólicos para as outras bibliotecas? ou pelo menos para fins de desenvolvimento, você pode copiar todas as bibliotecas em um diretório.
John Gardner

2
Eu não posso fazer isso ficar. Eu posso adicionar o caminho da biblioteca nativa, mas quando clico em OK para voltar e voltar às propriedades do projeto, ele diz "Nenhum". Estou usando o Eclipse Indigo SR2
Bacar

37

Se você o está adicionando como argumento da VM, verifique se o prefixa com -D:

-Djava.library.path=blahblahblah...

3
Consulte esta publicação: stackoverflow.com/a/2309723/510583 . -Djava.library.path = "$ {workspace_loc: projeto} \ lib; $ {env_var: PATH}"
leo

23

Exceto da maneira descrita na resposta aprovada, há outra maneira se você tiver uma única biblioteca nativa em seu projeto.

  • em Propriedades do Projeto-> Caminho de Construção Java-> Guia "Origem", há uma lista de suas pastas de origem
  • Para cada entrada, há "Locais da biblioteca nativa", que também suporta caminhos dentro da área de trabalho.
  • Isso fará com que o Eclipse o adicione ao seu java.library.path.

2
impressionante!!!! Muito obrigado!!! isso resolveu meu problema. necessário adicionar dylib ao meu projeto e um jar. definir a localização da biblioteca nativa corrigiu isso!
Ufk 22/08/13

11

Para um determinado lançamento de aplicativo, você pode fazê-lo como o jim diz.

Se você deseja configurá-lo para todo o espaço de trabalho, também pode configurá-lo em

Window->
  Preferences->
    Java->
      Installed JREs

Cada JRE possui um "argumento padrão da VM" (que acredito ser completamente ignorado se houver argumentos da VM definidos para uma configuração de execução).

Você pode até configurar JRE / JDKs diferentes com parâmetros diferentes e ter alguns projetos usando um, outros projetos usam outro.


8

Você pode simplesmente adicionar -Djava.library.path=yourPathao arquivo eclipse.ini.


6

Basta adicionar os *.dllarquivos ao seuc:/windows

Você pode obter o java.library.path dos seguintes códigos: e depois adicionar os arquivos DLL em qualquer caminho que você obtiver

import java.util.logging.Logger;

public class Test {


    static Logger logger = Logger.getLogger(Test.class.getName());
    public static void main(String[] args) {
    logger.info(System.getProperty("java.library.path"));
    }
}

Isso significaria que todos os usuários do seu projeto também precisariam colocá-los lá.
xtofl 01/09/11

Obrigado por isso. A idéia de colocar as DLLs c:/windowsme provou que era apenas um problema de caminho e não um problema com as DLLs.
vegemite4me

5

Nenhuma das soluções acima funcionou para mim (Eclipse Juno com JDK 1.7_015). O Java só pôde encontrar as bibliotecas quando as mudei de project_folder / lib para project_folder.


O que? Por que isso deveria ser importante? O_o
Campa

5

Eu acho que há outra razão para querer definir java.library.path. O Subversion vem com muitas bibliotecas e o Eclipse não as verá a menos que java.library.pathpossa ser anexado. Por exemplo, eu estou no OS-X, então as bibliotecas estão abaixo \opt\subversion\lib. Existem muitos deles e eu gostaria de mantê-los onde estão (não copiá-los em um diretório lib padrão).

As configurações do projeto não corrigem isso.


então, onde preciso adicionar os parâmetros java.library.path?
eLRuLL

4

Clique em Executar,
clique em Depurar ...
Novo aplicativo Java
Clique
na guia Argumentos na 2ª caixa (argumentos da VM) e adicione a entrada -D

-Xdebug -verbose:gc -Xbootclasspath/p:jar/vbjorb.jar;jar/oracle9.jar;classes;jar/mq.jar;jar/xml4j.jar -classpath -DORBInitRef=NameService=iioploc://10.101.2.94:8092/NameService  

etc ...


1
Além disso - na configuração da execução, vá para a guia "Comum" e escolha um local no seu projeto para salvar a configuração da execução. Isso permite que você verifique a configuração de execução (arquivo xxxx.launch) para que outras pessoas da sua equipe possam reutilizá-la.
Scott Stanchfield

3

Outra solução seria abrir a 'configuração de execução' e, na guia 'Ambiente', defina o par {Caminho, Valor}.

Por exemplo, para adicionar um diretório 'lib' localizado na raiz do projeto,

    Path  <-  ${workspace_loc:name_of_the_project}\lib

Mas talvez diretamente o argumento VM -Djava.library.pathna guia Arguments ?
Campa


1

Estou usando o Mac OS X Yosemite e o Netbeans 8.02, obtive o mesmo erro e a solução simples que encontrei é a acima, isso é útil quando você precisa incluir uma biblioteca nativa no projeto. O mesmo para o Netbeans:

1.- Right click on the Project
2.- Properties
3.- Click on RUN
4.- VM Options: java -Djava.library.path="your_path"
5.- for example in my case: java -Djava.library.path=</Users/Lexynux/NetBeansProjects/NAO/libs>
6.- Ok

Espero que possa ser útil para alguém. O link onde encontrei a solução está aqui: java.library.path - O que é e como usar


0

Às vezes, não temos o Java Build Path clicando diretamente com o botão direito do mouse no projeto. então vá para propriedades ....Clique com o botão direito e vá para propriedades

Em seguida, clique no caminho de compilação javaPropriedades Scrren

Clique em adicionar jar externo

Clique na guia adicionar frascos externos e indique o caminho do arquivo do seu computador onde você armazenou os frascos.


0

Aqui está outra correção:

Meu sistema de construção (Gradle) adicionou uma biblioteca nativa necessária (dll) ao caminho de construção do Eclipse (Clique com o botão direito do mouse em Projeto -> Propriedades -> Caminho de Construção Java -> Bibliotecas). Informar o sistema de construção para não incluir a biblioteca dll nativa no caminho de classe do Eclipse resolveu o problema.


0

Você pode adicionar o argumento vm no seu Eclipse.

Exemplo:

-Djava.ext.dirs=cots_lib

Onde cots_libestá sua biblioteca de pastas externas.


-1

a maneira mais fácil seria usar o próprio eclipse IDE. Vá para o menu e defina o caminho da construção. Faça apontar para o caminho do arquivo JAVA JDK e JRE em seu diretório. depois, você pode verificar o caminho de construção onde os arquivos compilados serão definidos. na pasta bin por padrão. O melhor seria permitir que o eclipse manipule o caminho de construção e apenas edite-o de forma semelhante à solução fornecida acima

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.