Pergunta

Esta questão já tem uma resposta aqui:

Eu uso o Eclipse (3.4) e meus compila classe sem aviso ou erros. Meu projeto usa um arquivo jar externo.

Onde é que eu preciso para colocar esse arquivo jar externo, a fim de não obter um java.lang.NoClassDefFoundError ao usar essa classe de outro projeto (não em Eclipse)?

Eu poderia apenas extrair o jar para a pasta do projeto, mas que não se sente bem.

Edit:. Esta pergunta não é sobre a importação de frascos em Eclipse, mas usá-los fora do Eclipse

Foi útil?

Solução

Se você está querendo incluir um arquivo JAR para o projeto Eclipse, você geralmente criar um dentro da pasta do projeto 'lib' pasta e colocar o arquivo lá. Você, então, precisa dizer eclipse incluí-lo em seu caminho de classe para que o seu código irá compilar e executar eclipse dentro.
Para fazer isso:
- Vá para as propriedades de seu projeto
- Select 'Java Build Path' na coluna do lado esquerdo
- Selecione a guia 'Bibliotecas' na parte central da janela
- Clique no botão Add JARs - isso vai lhe dar uma lista de seus projetos no eclipse - expandir seu projeto e para a pasta lib -. Seu frasco vai estar lá
- Selecione o JAR, clique em OK e em OK novamente para fora da janela de propriedades

.

Seu código irá agora compilar e executar.

Outras dicas

colocá-lo em seu jre/lib/ext pasta

tudo dito sobre o classpath é verdade, mas este é um lugar consistente e sensível para que possa viver.

Você pode descobrir sua pasta jre por olhar para a variável de ambiente JAVA_HOME no Windows.

Não importa muito onde você colocá-lo, mas você precisa configurar seu outro projeto non-Eclipse para colocar os frascos externos em seu caminho de classe - ou usar o mecanismo de diretório de extensões, se for preciso. (Isso é mais fácil, mas tornando-se explícita é indiscutivelmente melhor.)

A resposta de Simon parece ser o melhor, mas um pouco desatualizado agora. Já pesquisei este doc a Oracle extensões instaladas .

A partir do Java 6, arquivos de extensão JAR também pode ser colocado em um local que é independente de qualquer JRE particular, de modo que as extensões podem ser compartilhados por todos os JREs que estão instalados em um sistema.

Ele diz que para o Windows você deve colocar suas extensões aqui% SystemRoot% \ Sun \ Java \ lib \ ext.

Você só precisa fazer referência a ela usando uma opção -classpath, em uma pasta que não está incluído em um espaço de trabalho do eclipse, ou seja, que não depende de eclipse em tudo.

Atenção, você cannoy executar o seu outro projeto com java -jar se você faz referência o seu jar externo com opção -cp ( ver esta questão )

Eu colocá-lo em uma nova pasta. Esta pasta tem de ser incluído no caminho de construção. Não importa se é em Eclipse ou no exterior. Eclipse tem um caminho de construção de projeto específico e passa este caminho para o javac. Se você deseja executar fora javac de Eclipse, você tem que passar a caminho de construção manualmente.

Eu sei que isso não é exatamente o que você está pedindo, mas você já considerou usando Maven? Alguns dos plugins como a montagem pode ser útil em situações como estas.

Tenha um frasco dentro do Eclipse, como James Camfield tem escrito.

Então, quando você constrói (Ant, Maven, manualmente) para distribuição, garantir que o arquivo jar é incluído com ou dentro de seu frasco aplicação ou guerra ou ouvido ou qualquer arquivo, e que quaisquer scripts de inicialização incluí-lo no classpath usando o - opção de linha de comando classpath para java, como VonC tem escrito.

Não se preocupe com furando os frascos nas extensões java pasta, tudo isso vai fazer é fazer você esquecer quando se trata de enviar o código para um terceiro para uso, porque eles não vão tê-lo criado em sua extremidade.

Crie um diretório lib compartilhada e coloque este frasco, e quaisquer outros arquivos frascos comuns que você pode ter lá. Se você estiver usando Maven, então você já tê-lo na forma do repo local.

Em Eclipse, crie uma variável classpath para este diretório e, em seguida, usá-lo para fazer referência a seu arquivo jar em seus projetos. Se você tem vários projetos que atendem a essas condições, ele vai tornar a vida muito mais fácil. Também torna mais fácil mudar a localização da raiz do diretório se você vai de uma unidade local de uma rede.

No aplicativo externo, você também vai incluir esse arquivo jar da sua localização partilhada no classpath apps.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top