View Full Version : [java]aiuto creazione 'eseguibile'
ho fatto un programmino in java per scopi open source...mi trovo con molti file .class che per me ha compilato eclipse... ora, volendo far partire l'eseguibile mi dà una serie di errori che io non capisco...inoltre mi piacerebbe creare il file .jar per un più facile controllo del programmino...
ecco a voi i
sorgenti (http://www.archivia.altervista.org/Sorgenti.rar)
premetto che so che per compilare ci vuole una javac file.java e per eseguire ci vuole un java file.class ...:(
grazie a tutti per il vostro aiuto...scusate per la domanda niubba ma non è colpa mia se all'università ti insegnano a programmare e non a fare uno stupido file 'eseguibile'.
ho fatto un programmino in java per scopi open source...mi trovo con molti file .class che per me ha compilato eclipse... ora, volendo far partire l'eseguibile mi dà una serie di errori che io non capisco...inoltre mi piacerebbe creare il file .jar per un più facile controllo del programmino...
ecco a voi i
sorgenti (http://www.archivia.altervista.org/Sorgenti.rar)
premetto che so che per compilare ci vuole una javac file.java e per eseguire ci vuole un java file.class ...:(Ho visionato i tuoi sorgenti. Ecco cosa ho fatto per creare un file .jar. Ti spiego passo passo i vari procedimenti.
Ho visto innanzitutto che la classe ArchiviaException non viene usata, quindi ho ignorato questo file.
Ho visto inoltre che nei tuoi sorgenti utilizzi un package denominato "michele".
Per prima cosa ho creato una nuova directory, chiamiamola "Progetto". In questa directory ho creato una nuova directory chiamata "michele" e in quest'ultima ho messo i sorgenti .java.
Questa directory "michele" è assolutamente necessaria, perché la struttura dei package si deve "riflettere" nella struttura delle directory.
Restando poi nella directory "Progetto" ho fatto le seguenti cose:
javac michele\Main.java
e ho così creato tutti i file .class.
Poi ho creato un file denominato "MANIFEST" (in realtà si può chiamare come vuoi) con dentro solamente la seguente riga:
Main-Class: michele.Main
Poi ho lanciato:
jar cvmf MANIFEST michele.jar michele\*.class
A questo punto ho ottenuto il file jar.
Per lanciare l'applicazione basta fare:
java -jar michele.jar
grazie mielle ;) ...
ho ancora una domanda...come mai javac non mi viene riconosciuto da 'cmd' come comando??? eppure ho installato eclipse quindi la JRE è già installata....cosa devo installare per fare in modo da poter utilizzare javac???
grazie mielle ;) ...
ho ancora una domanda...come mai javac non mi viene riconosciuto da 'cmd' come comando??? eppure ho installato eclipse quindi la JRE è già installata....cosa devo installare per fare in modo da poter utilizzare javac???Ma hai installato JRE oppure JDK???
JRE->Java Runtime Environment
JDK->Java Development Kit
:)
grazie mielle ;) ...
ho ancora una domanda...come mai javac non mi viene riconosciuto da 'cmd' come comando??? eppure ho installato eclipse quindi la JRE è già installata....cosa devo installare per fare in modo da poter utilizzare javac???
...devi impostare il classpath nelle variabili d'ambiente del sistema operativo...
...ciao...
Ho visionato i tuoi sorgenti. Ecco cosa ho fatto per creare un file .jar. Ti spiego passo passo i vari procedimenti.
Ho visto innanzitutto che la classe ArchiviaException non viene usata, quindi ho ignorato questo file.
Ho visto inoltre che nei tuoi sorgenti utilizzi un package denominato "michele".
Per prima cosa ho creato una nuova directory, chiamiamola "Progetto". In questa directory ho creato una nuova directory chiamata "michele" e in quest'ultima ho messo i sorgenti .java.
Questa directory "michele" è assolutamente necessaria, perché la struttura dei package si deve "riflettere" nella struttura delle directory.
Restando poi nella directory "Progetto" ho fatto le seguenti cose:
javac michele\Main.java
e ho così creato tutti i file .class.
Poi ho creato un file denominato "MANIFEST" (in realtà si può chiamare come vuoi) con dentro solamente la seguente riga:
Main-Class: michele.Main
Poi ho lanciato:
jar cvmf MANIFEST michele.jar michele\*.class
A questo punto ho ottenuto il file jar.
Per lanciare l'applicazione basta fare:
java -jar michele.jar
Ciao, come cambia la procedura se io ho due package: "grafica" e "struttura" in una cartella di progetto chiamata "casino"... in queste due cartelle ho tutti i file .class ...però l'applicazione usa anche dei suoni e delle immagini che stanno in sopra cartelle di "casino"... praticamente è l'organizzazione dei file di Borland JBuilder... come faccio a creare un jar con tutto quello che serve dentro, in modo che l'applicazione si avvia con doppio click sul jar?
Ho provato tanto per tentare:
C:\Documents and Settings\Lux\Desktop\Casinò\src\casino>jar cvmf manifest grafic
a.jar grafica\*.class struttura\*.class
aggiunto manifesto
aggiunta in corso di: grafica/FinestraRoulette$Exit.class (in = 1034) (out = 529
) (compresso 48%)
aggiunta in corso di: grafica/FinestraRoulette.class (in = 317) (out = 221) (com
presso 30%)
aggiunta in corso di: grafica/FinestraSlot.class (in = 197) (out = 156) (compres
so 20%)
aggiunta in corso di: grafica/PannelloFinestraSlot$Exit.class (in = 1284) (out =
572) (compresso 55%)
aggiunta in corso di: grafica/PannelloFinestraSlot$Go.class (in = 1335) (out = 5
71) (compresso 57%)
aggiunta in corso di: grafica/PannelloFinestraSlot.class (in = 995) (out = 558)
(compresso 43%)
aggiunta in corso di: grafica/PannelloImmagineGiocatore.class (in = 1007) (out =
514) (compresso 48%)
aggiunta in corso di: grafica/PannelloImmagineRoulette.class (in = 969) (out = 5
06) (compresso 47%)
aggiunta in corso di: grafica/PannelloImmagineSlot.class (in = 961) (out = 505)
(compresso 47%)
aggiunta in corso di: grafica/PannelloStart$PlayRoulette.class (in = 1049) (out
= 511) (compresso 51%)
aggiunta in corso di: grafica/PannelloStart$PlaySlot.class (in = 1037) (out = 50
8) (compresso 51%)
aggiunta in corso di: grafica/PannelloStart.class (in = 1111) (out = 612) (compr
esso 44%)
aggiunta in corso di: grafica/SimboloUnoSlot.class (in = 1118) (out = 539) (comp
resso 51%)
aggiunta in corso di: grafica/Start$OkAction.class (in = 1096) (out = 502) (comp
resso 54%)
aggiunta in corso di: grafica/Start.class (in = 1186) (out = 580) (compresso 51%
)
aggiunta in corso di: struttura/Gestore.class (in = 384) (out = 278) (compresso
27%)
aggiunta in corso di: struttura/Giocatore.class (in = 1190) (out = 531) (compres
so 55%)
aggiunta in corso di: struttura/SlotMachine.class (in = 1219) (out = 608) (compr
esso 50%)
Ma poi, vabè che non ho incluso immagini e suoni, però se provo a fare doppio click mi dice: Could not find the main class. Program will exit
Invece il main sta proprio in Star.java:
public class Start extends JFrame{
protected Giocatore g;
private PannelloStart p;
...cut....
//GESTIONE DELL'EVENTO SUL PULSANTE OK DI DIALOG
private class OkAction implements ActionListener{
public void actionPerformed(ActionEvent event){
nomeGiocatore=textName.getText();
g=new Giocatore(nomeGiocatore,0,1000,0);
dialog.setVisible(false);
}
}
public static void main(String args[]){
new Start();
}
}
Aiutatemi voi per favore :(
Aiutatemi voi per favore :(Innanzitutto il nome della classe che contiene il main() deve essere correttamente specificato nel Manifest. Cioè l'entry nel Manifest deve essere:
Main-Class: nomepackage.nomeclasse
Poi per quanto riguarda il posizionamento e caricamento delle immagini (e risorse in generale), leggi bene <qui> (http://java.sun.com/docs/books/tutorial/uiswing/components/icon.html#getresource).
Il mio manifest si trova in "casino" (cartella principale che contiene "grafica" e "struttura") e dentro ho scritto solo e esattamente:
Main-Class: grafica.Start
Ora leggo il link che mi hai passato ;)
Perchè il mio manifest non funziona? :muro:
Dentro il jar creato ho 3 cartelle:
grafica: con tutte le classi
struttura: con tutte le classi
META-INF: che contiente un MANIFEST.MF ...però se apro questo file dentro ci trovo solo:
Manifest-Version: 1.0
Created-By: 1.5.0_06 (Sun Microsystems Inc.)
e nessun riferimento alla classe main... è normale?
e nessun riferimento alla classe main... è normale?No, così non è corretto (ed è strano).
Comunque nella tua prova di prima:
C:\Documents and Settings\Lux\Desktop\Casinò\src\casino>jar cvmf manifest grafica.jar grafica\*.class struttura\*.class
aggiunto manifesto
aggiunta in corso di: grafica/FinestraRoulette$Exit.class (in = 1034) (out = 529
) (compresso 48%)
...
Il manifest in effetti l'hai aggiunto. Quindi non saprei perché nel JAR il manifest non è ok. Cancella il jar e riprova.
Sono andato a modificare a mano il manifest dentro il jar.. ho aggiunto la riga Main-Class ecc.
Ora mi succede una cosa strana... se lo lancio con doppio clic.. solito messaggio che non trova la main class.. se invece lo lancio da console con java -jar casino.jar parte! :eek: dove sta il problema?
Sono andato a modificare a mano il manifest dentro il jar.. ho aggiunto la riga Main-Class ecc.
Ora mi succede una cosa strana... se lo lancio con doppio clic.. solito messaggio che non trova la main class.. se invece lo lancio da console con java -jar casino.jar parte! :eek: dove sta il problema?Anche questo è strano. Ma non ti so dire di più. :boh:
Io per progetti non proprio banali non uso i tools "a mano" ma utilizzo Ant, che è molto comodo e pratico.
http://www.hostfiles.org/download.php?id=299D3271
Fatemi un test se da voi va!
Scaricate il file rar da qui sopra, apritelo e avviate casino.jar sia con doppio clic che da console con java -jar casino.jar.
Ditemi se vi parte in entrambi i modi, o solo da console o non vi parte proprio!
Poi visto che ci siete provate a giocare un po' e darmi le vostre impressioni! ;)
Fatemi un test se da voi va!A me va sia facendo doppio-click che lanciandolo a mano con java -jar ...
Va tutto con suoni e immagini? hai provato a giocare? si vede tutto ok?
Io con doppio clic lo ho abbinato a:
programmi ---> java ---> jdk1.5.0_06 ---> bin ---> javaw.exe
giusto?
Va tutto con suoni e immagini? hai provato a giocare? si vede tutto ok?Sì tutto a posto, salvo il fatto della questione delle immagini (vedi l'altro tuo 3d). Nel primo zip che ho scaricato infatti le immagini stanno in una directory 'immagini' che è allo stesso livello del jar e quindi funziona. Ma se hai solo il jar ... nada.
Io con doppio clic lo ho abbinato a:
programmi ---> java ---> jdk1.5.0_06 ---> bin ---> javaw.exe
giusto?Nel mio registro di Windows, l'associazione è:
"C:\Programmi\Java\jre1.5.0_09\bin\javaw.exe" -jar "%1" %*
(vedi sotto la chiave HKEY_CLASSES_ROOT\jarfile)
Ho la stessa identica associazione.. ma non va! :boh:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.