Pacotes Jar

Coloquei os jar no diretório raiz da aplicação, tentei executar a aplicação, mas reclamou a falta de uma classe que está dentro dos pacotes Jar. Se eu utilizar bibliotecas em pacotes Jar, tenho como obrigação informá-los no CLASSPATH ou na linha de comando java -cp pacote1.jar;pacote2.jar. É isso?

Oi cara, não sei se é isso q ta perguntando, mas por exemplo

eu uso o netbeans, aí eu quero adicionar um jar pra que meu programa utilize as funcionalidades desse jar, eu faço o seguinte, nas propriedades do projeto, na parte de libraries/JARs adiciono o Jar (tipo o do mysqlconnector), aí quando eu mando construir (build) o netbeans copia o jar para a pasta \lib da raiz da pasta de distribuição do projeto. Fica mais ou menos assim.

\dist\meu_programa.jar
\dist\bin\mysqlconnector.jar

Veja este tutorial, sobre JAR

http://www.guj.com.br/java.tutorial.artigo.42.1.guj

flw

Eu criei o jar da seguinte forma

jar -cmf ..\MANIFESTO.MF teste.jar *.*

No diretório raiz se encontrar minha classe que utiliza os pacote1.jar e pacote2.jar
criei uma pasta lib e coloquei todos os pacotes jar utilizados. Quando executo acontece o seguinte erro

[b]Failed to load Main-Class manifest attribute from[/b]

Segue o meu arquivo manifesto

Manifest-Version: 1.0
Class-Path: lib\pacote1.jar lib\pacote2.jar
Main-Class: SimpleFormTest 

O que eu fiz de errado?

Resolvi o problema, quando gerava o arquivo Jar utilizando um arquivo de manifesto próprio ele não incluia o atributo Main-Class.

Bom mas agora estou com outro problema quando executo o programa ele não encontra a minha classe principal. Seria o CLASSPATH?

java -jar teste.jar
Exception in thread “main” java.lang.NoClassDefFoundError: SimpleFormTest

Eu a variável de ambiente no Windows “CLASSPATH = .”, mesmo assim ele não encontra a classe.

Quando executo sem empacotar o arquivo Jar funciona, mas tenho que setar o diretorio atual “.” na linha de comando

java -cp .;lib\pacote1.jar;lib\pacote2.jar SimpleFormTest.

Eu adicionei o “.” no class-path do manifest mas não funcionou. Quando executo o arquivo Jar

java -jar teste.jar

aparece o seguinte erro

Exception in thread "main" java.lang.NoClassDefFoundError: SimpleFormTest

Meu arquivo manifesto

Manifest-Version: 1.0
Class-Path: lib\pacote1.jar lib\pacote2.jar
Created-By: 1.6.0_03 (Sun Microsystems Inc.)
Main-Class: SimpleFormTest

O problema que ele não está encontrando a classe no diretório atual.

Alguém tem uma solução.

Resolvi o problema da seguinte forma:

A classe SimpleFormTest possuia o método main dentro dele eu criava a classe e dessa forma empacotada não funcionava.

public class SimpleFormTest extends JFrame {

         public static void main(String[] args) {
               SimpleFormTest form = new SimpleFormTest();
	form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	form.setVisible(true);
         }

}

Criei outra classe com o método main e renomeia a anterior, ficando da seguinte forma.


public class SimpleFormPrinc extends JFrame {

}

public class SimpleFormTest  {

         public static void main(String[] args) {
               SimpleFormPrinc form = new SimpleFormPrinc();
	form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	form.setVisible(true);
         }
}