Pessoal, 3 dúvidas: o resultado do JAR é apenas 1 arquivo (.jar) criado ou algum outro arq deveria tb ser criado? Além das classes meu projeto tem pastas com CSS, imagens e arquivos TXT. O JAR tb deve incorporar estas pastas tb? Como? Caso contrário, se o JAR tratar apenas as classes, qual a prática comum em lidar com os demais componentes (imagens, arqs) quando se pretende instalar o projeto (desktop) em um outro PC? Última pergunta: o arq JAR pode ser executado no windows 7 apenas clicando nele? Grato.
até onde eu sei um Jar incorpora tudo que está no projeto.
no windows 7 ou em qualquer windows ou linux ou mac (tendo o java instalado) esse jar vai ser executado apenas clicando 2 veses
blayd2015, grato pela resposta. O JAR é uma mera compactação? Eu preciso necessariamente usar o comando JAR q vem junto com o Java ou eu poderia usar o WZip ou RAR? O resultado seria o mesmo? Abcs.
O JAR é uma forma para agrupar os arquivos da aplicação.
Vc poderia usar WZip ou RAR, mas não há garantias de que o resultado seja o mesmo, pois além das classes e arquivos da aplicação, também são incluídos arquivos de inicialização e configuração da aplicação. Se vc souber criar esses arquivos, então o resultado poderia ser o mesmo.
No JDK contém bibliotecas para ler e escrever arquivos, vc pode colocar os arquivos em qualquer lugar, como qualquer outra aplicação.
Sim, desde que o java esteja corretamente configurado. Quando o JDK ou JRE é instalado, automaticamente é feita essa configuração.
diego12, grato pela resposta. Estou com 2 problemas:
-
Consegui criar o Arq.jar só com as classes e o manifest. Não consegui incluir as pastas que contém
imagens e arquivos txt necessarios ao projeto. Usei o seguinte comando do JAR no prompt:jar -cvfm Arq.jar manifest.txt c:\java\classes\pack1*.class
Este pegou todas as classes e o manifest, porém não pegou as pastas.
jar -cvfm Arq.jar manifest.txt c:\java\classes\pack1*.*
Mesmo resultado. Só classes e manifesto
Outro ponto: Tentei rodar o JAR mas nada ocorre. Vi a qual aplicativo a extensão JAR estava atribuida e estava
atribuida ao Java. Para testar, vi q na pasta de instação do JAVA existiam varios aplicativos (java, javaw, javaws, etc).
Mudei a atribuição para todos, mas o aplicativo não carrega.
qual IDE de desenvolvimento vc está usando??
pq vc tá usando o prompt?
blayd2015, estou usando o prompt apenas para fixar as instruções do Java (amarração dos threads, etc). Em
breve começarei a usar um IDE.
Mas, o 1o problema (o JAR não pegar as pastas de imagens, arqs, etc) eu consegui resolver. Bastou não
usar o . no final e sim terminar no …\pack1\
Mas o problema da execução continua. Vc acha q eu preciso usar um JARFix?
Procure o manifest dentro do JAR (meta-inf/manifest.mf), abra com editor de texto e verifique se contém a propriedade Main-Class
Main-Class: aplicacao.ClasseComMain
O valor da propriedade deve ser a classe que contém o método main
.
Se as imagens estão dentro de pack1 ou subdiretórios, tente:
jar -cvfm Arq.jar manifest.txt c:\java\classes\pack1
se não der certo, adicione com a extensão dos arquivos:
c:\java\classes\pack1\*.png
diego12, grato pela resposta. Olhei o manifest (sufixo mf) e tem a Main-Class com a classe principal (q tem o
método start. A classe é JFX, por isso é start no lugar do main).
O importante é q já resolvi a questão do JAR pegar tudo, inclusive pastas, imagens e arqs, como comentei
no post anterior.
O problema q tenho agora é em executar o JAR. Ele simplesmente não roda. Olhei e o sufixo JAR e está
relacionada a um aplicativo Java.
Você consegue me ajudar nisso? Grato.
Se não me engano, é Main-Class
também para o JavaFX. No método main
deve chamar launch
:
public static void main(String[] args) {
launch(args);
}
diego12, desculpe-me pela demora. Segui sua sugestão e incluí o método main, como segue:
identar texto pre-formatado em 4 espaços
public class ClsConAvi extends Application
{
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage)
{
// código
}
Esse é o manifest.mf que está dentro do JAR:
Manifest-Version: 1.0
Created-By: 1.8.0_131 (Oracle Corporation)
Main-Class: ClsConAvi
O JAR está com o Path (java/classes/pack1/ e dentro do pack1 estão todas as pastas
com arqs, imagens, etc. Também estão todas as classes do projeto.
Porém o JAR continua não rodando. Tentei rodá-lo com os seguintes executáveis JAVA:
- JAVA™ Platform SE binary (existem 4 executáveis com este nome. Tentei os 4);
- JAVA™ Web Launcher;
- JAVA™ Web Start Launcher
Será que você consegue detectar o que está errado? Grato.Texto pré-formatado
Tente rodar no prompt, verifique se aparece uma mensagem de erro.
diego12, rodei no prompt com o comando java -jar ClsConAvi.jar e dá o seguinte erro:
C:\java\classes\pack1>java -jar ClsConAvi.jar
Erro: Não foi possível localizar nem carregar a classe principal ClsConAvi
O Arquivo ClsConAvi.JAR está no path C:/java/classes/pack1. Neste mesmo path estão todas as
classes do projeto, inclusive a própia ClsConAci.class. Estão tb as pastas com imagens, arqs, etc.
Tentei rodar em outros diretórios (c:java/, c:java/classes/) e a msg é:
C:\java>java -jar ClsConAvi.jar
Error: Unable to access jarfile ClsConAvi.jar
O q vc acha? Grato.
Sugestão, compile seu programa usando um IDE e depois compare o manifest
gerado com o que vc fez, provavelmente falta alguma configuração.
diego12, ok. Grato. Vou fazer isso. Abcs.