Boa tarde pessoal. Sou iniciante em java e acabei uma aplicação desktop sendo que quero gerar um .jar do projeto inteiro inclusive com as bibliotecas.
Meu projeto tem a seguinte estrutura sendo que utilizei o NetBeans pra fazer o mesmo:
ModuloCliente -->(nome do projeto)
Pacotes de Codigo Fontes -->(Contém diversos pacotes com as classes da minha aplicação. A classe principal chama "Principal.java")
Pacotes de testes -->(Está vazio, criou sozinho e eu não coloquei nada dentro dele)
Bibliotecas -->(Contém as bibliotecas que usei na minha aplicação)
Bibliotecas de testes -->(O netbeans criou sozinho e contém duas bibliotecas que não usei chamadas JUnit)
Assim pessoal, queria criar um .jar que tivesse tudo dentro dele, inclusive as bibliotecas.
Depois queria encontrar uma maneira de executar a aplicação a partir desse arquivo, mas que não fosse através do console mas sim através de um .exe ou algo assim.
Compile tudo, e crie o jar da classe principal. Automaticamente o NetBeans organizará tudo pra você. E outra, se você tem o jar, você não precisa do exe. Mas se preferir isto, crie um diretório para seu programa, e coloque-o la ex:
C:\arquivos de programas\mySystem\program.jar
Depois crie um programa em C que chame-o através de um comando do sistema:
[code]#include <stdio.h> // default lib #include <stdlib.h> //system() function
int main(void)
{
/**/system(“C:\arquivos de programas\mySystem\program.jar”);
}[/code]
Lembrando que isto não é recomendável, pois ao invés de um processo (seu programa em Java), você teria 2 processos.
Cara, poderia me explicar com mais detalhes como fazer para compailar pelo netbeans e tal? Eu tente gerar um build pelo netbeans, ele até gerou em uma pasta um .jar com o nome do meu projeto, mas olhei dentro do jar e percebi que as bibliotecas não estavam inclusas é tal. Pq assim, quero gerar esse jar para rodar em outros pcs onde terá apenas a maquina virtual instalada.
Sobre a parte de criar um programinha em c para rodar o jar, essa seria a única maneira de executar o jar sem ser pelo dos?
Cara, poderia me explicar com mais detalhes como fazer para compailar pelo netbeans e tal? Eu tente gerar um build pelo netbeans, ele até gerou em uma pasta um .jar com o nome do meu projeto, mas olhei dentro do jar e percebi que as bibliotecas não estavam inclusas é tal. Pq assim, quero gerar esse jar para rodar em outros pcs onde terá apenas a maquina virtual instalada.
Sobre a parte de criar um programinha em c para rodar o jar, essa seria a única maneira de executar o jar sem ser pelo dos?
Agradeço a atenção e fico no aguardo.
Grande abraço.[/quote]
Quando você gera o jar-file você pode rodar em qualquer computador normalmente. Faça o teste colocando o programa em outro computador. Em relação ao executar o jar, o jar-file pode ser executado como um programa normal, não precisa ser necessariamente no prompt ou no shell. No caso do Windows, apenas gere o jar-file e execute-o normalmente, no caso do Linux, onde o mesmo deve ser executado com:
$ java -jar program.jar
Você deve criar um link simbólico em /usr/bin e depois criar um lançador com este caminho. Mas digo isso crendo que seu programa é gráfico, pois se roda em terminal (modo de texto) é melhor executa-lo através dos class-file (arquivos.class)
Cara, ao rodar o .jar pelo dos ele me dá esse erro:
Microsoft Windows XP [versão 5.1.2600]
C:\Nova pasta>java -jar ModuloCliente.jar
Exception in thread "main" java.lang.NoClassDefFoundError: Principal
Caused by: java.lang.ClassNotFoundException: Principal
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Principal. Program will exit.
Parece que ele não acha a classe principal né? Meu arquivo manifest está assim:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.0
Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.)
Main-Class: Principal
Class-Path: lib/xstream-1.3.jar lib/xpp3_min-1.1.4c.jar
X-COMMENT: Main-Class will be added automatically by build
Sabe qual seria o problema?
Cara, ao rodar o .jar pelo dos ele me dá esse erro:
Microsoft Windows XP [versão 5.1.2600]
C:\Nova pasta>java -jar ModuloCliente.jar
Exception in thread "main" java.lang.NoClassDefFoundError: Principal
Caused by: java.lang.ClassNotFoundException: Principal
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Principal. Program will exit.
Parece que ele não acha a classe principal né? Meu arquivo manifest está assim:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.0
Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.)
Main-Class: Principal
Class-Path: lib/xstream-1.3.jar lib/xpp3_min-1.1.4c.jar
X-COMMENT: Main-Class will be added automatically by build
Sabe qual seria o problema?
Faz assim:
1° Você vai ter que dizer qual a classe principal do ser projeto, no seu caso “Principal.java”.
Vai em propriedades do projeto --> executar --> Classe Principal e adiciona a tua classe.
Cara, desculpe mas não entendo como fazer seguindo o link que me passou, até mesmo pq meu projeto não tem nenhum buil.xml uma vez que é pra desktop e no link falava sobre o mesmo que deveria ser alterado e tal.
Saberia alguma outra forma de ter as bibliotecas juntas com a aplicação em si?
[quote]Cara, desculpe mas não entendo como fazer seguindo o link que me passou, até mesmo pq meu projeto não tem nenhum buil.xml uma vez que é pra desktop e no link falava sobre o mesmo que deveria ser alterado e tal.
Saberia alguma outra forma de ter as bibliotecas juntas com a aplicação em si?
Agradeço a ajuda e fico no aguardo.[/quote]
Deve ter sim, mesmo se você tiver criado como JavaApplication.
No teu NetBeans deveria ter 3 abas Projetos (Projects) - Arquivos (Files) - Serviços (Services).
Para visualizar o build.xml você deve está em arquivos
Copia esse código lá, logo acima dá ultima linha onde tem
<target name="package-for-store" depends="jar">
<!-- Change the value of this property to be the name of your JAR,
minus the .jar extension. It should not have spaces.
<property name="store.jar.name" value="MyJarName"/>
-->
<property name="store.jar.name" value="ModuloCliente"/>
<!-- don't edit below this line -->
<property name="store.dir" value="store"/>
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>
<delete dir="${store.dir}"/>
<mkdir dir="${store.dir}"/>
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
</manifest>
</jar>
<zip destfile="${store.jar}">
<zipfileset src="${store.dir}/temp_final.jar"
excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>
</zip>
<delete file="${store.dir}/temp_final.jar"/>
</target>
Depois vai com o botão direito em build.xml --> Executar destino --> Outros destinos --> package-for-store
Deve aparecer CONSTRUÍDO COM SUCESSO e o teu ModuloCliente.jar vai está pronto dentro da pasta store
que está dentro do teu projeto do NetBeans