View Full Version : Guida a JDK
Ho scaricato il JDK ma non so come usarlo per compilare un file .java. Qualcuno potrebbe darmi qualche dritta ?
Senza altri tool devi usare la linea di comando (il prompt di dos); ti sposti nella cartella dove hai il file *.java e scrivi (ad es.):
javac nomefile.java [invio]
per far partire il file, nella stessa posizione
java nomefile {senza estensioni} [invio]
Ciao.
ps: se non hai già impostato la variabile path ti salterà fuori un messaggio "javac non è un programma riconosciuto...". Se succede, al prompt del dos scrivi
se path=c:\jdk1.4.1_01\bin [o la posizione in cui hai installato il jdk\bin]
Ariciao.
Questo mi è molto utile, così posso fare un file batch per lanciare il mio programma!
Non posso fare un eseguibile col java vero?
Per il momento solo Applet!
Ci sono degli strumenti esterni per fare degli eseguibili Windows (praticamente tutti i tool di sviluppo tipo Visual Café di Symantec, Visual J++ ecc.). Se vuoi provare ti segnalo questo link (http://mpowers.net/executor/), dove trovi una demo (non l'ho provata).
Convertendo il tutto in file *.exe perdi la portabilità dell'applicazione, cosa che invece mantieni se utilizzi un archivio eseguibile *.jar (un "normale" archivio jar che contiene tutti i dati dell'applicazione e ne permette l'esecuzione senza la linea di comando, in pratica si comporta come un *.exe solo che è indipendente dalla piattaforma). Se ti interessano gli eseguibili *.jar c'è una discussione aperta su questo forum. Se preferisci una sintesi scrivi.
Ciao.
Originally posted by "dado82"
Questo mi è molto utile, così posso fare un file batch per lanciare il mio programma!
Non posso fare un eseguibile col java vero?
Per il momento solo Applet!
su linux si' non ottieni un eseguibile vero,naturalmente, ma basta che richiami il nome della classe che contiene il main e il so si occupa di lanciare la jvm
Anche a me interesserebbe trasformare un Applet in un file eseguibile .jar. Dalla discussione già aperta su questo argomento non ho capito moltissimo e mi servirebbe ancora qualche dritta
Salgo in cattedra, se dico stupidaggini qualcuno mi tolga la sedia da sotto le chiappe :D .
Allora, per prima cosa se vuoi fare un'applet "stand alone" (senza la pagina html) devi inserire nel codice dell'applet un metodo main.
Supponiamo che il costruttore dell'applet si chiami "MyApplet", allora il codice da inserire è:
public static void main(String[] args) {
JFrame frame=new JFrame("Titolo della finestra");
frame.setSize(500, 500);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add("Center",new MyApplet());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
Fatto questo la tua applet funziona sia come applicazione java sia come applet per html.
Se la classe MyApplet non appartiene ad un package:
Nella cartella in cui hai i file *.class crei un file di testo con Notepad o chi per esso e scrivi:
Main-Class: MyApplet [invio]
e lo salvi come Manifest.txt (qualunque nome però va bene).
Con dos ti posizioni nella cartella in cui ci sono il file "MyApplet.class" e "Manifest.txt" e scrivi:
jar mcf Manifest.txt MyApplet.jar MyApplet.class [invio]
Se la classe fa parte di un package vai nella cartella immediatamente superiore al package, in questo caso il file Manifest.txt è:
Main-Class: nomepackage.MyApplet [invio]
da salvare nella cartella superiore al package e il comando è:
jar mcf Manifest.txt MyApplet.jar nomepackage/ [invio]
Per controllare che tutto funzioni scrivi al prompt dos:
javaw MyApplet.jar [invio]
se compare il messaggio "Could not found Main Class, program will exit"
scrivi.
Ciao.[/code]
Adesso provo. Vorrei sapere anche un'altra cosa: sto cercando di fare un applet dove c'è un segmento di estremi A e B mobili. Cioè con la tastiera o con il mouse si dovrebbe poter spostare A e B. Mi servirebbe qualche dritta perchè non ci riesco. Un'altra cosa: come si fa a fare la radice quadrata in Java ? ho provato con sqrt ma il compilatore dice che non riconosce il simbolo.
Per l'sqrt se guardi la doc Java è
double a=Math.sqrt(double b);
Per la faccenda dei due punti di consiglio di dare un'occhiata a MouseMotionListener
+ o - ho capito come funziona sto file jar.
Il main che ho creato io, devo inserirlo sotto il codice che ha postato PGI?
E' obbligatorio?
Ciao!
Originally posted by "PGI"
se compare il messaggio "Could not found Main Class, program will exit"
scrivi.
Ciao.[/code]
Si mi compare, che faccio??
La classe che contiene il metodo main appartiene ad un package?
Originally posted by "PGI"
La classe che contiene il metodo main appartiene ad un package?
Che significa package?
Quando crei un progetto in java è possibile definire le varie classi come appartenenti ad un package, un contenitore che raggruppa un certo numero di classi.
java.applet è ad esempio un package e la classe Applet è uno dei suoi componenti.
L'appartenenza ad un package si dichiara con il "tag"
package esMioPackage;
nell'intestazione del codice. "Fisicamente" il package richiede una cartella dedicata sul disco. Nell'esempio sopra le classi che appartengono al package verranno salvate in una cartella di nome esMioPackage. Se nel tuo codice è presente quell'intestazione (in genere creata per default dai compilatori visuali) la classe appartiene ad un package.
Il messaggio d'errore ci dice che c'è un problema di questo tipo:
1. il file Manifest non è corretto. Controlla che sia nella forma
Main-Class: nomeclasse [invio]
2. il manifest è ok ma richiama una classe che non contiene un metodo main.
3. il metodo main esiste ma non è corretto.
Controlla anche il contenuto del tuo file jar con il comando
jar tf nomefile.jar
Qual'è l'output?
Ci sto capendo poco poco, so solo che in uni spiegano proprio poco di ste cose.Allora io ho fatto un programma che serve per la creazione di uno stack, lo so che c'è già di default nelle librerie, però è un esercizio per l'esame di programmazione.
Il main se lanciato con il compilatore non da errori, se lo lancio in esecuzione funziona bene.
Se creo il file .jar mi da l'errore.
dovrebbe dare come output a video una pila e dovrei operare su questa pila (è un array per il momento) e opero con Peek, push, pop e stampa..
ciao!
Se capisci poco è perchè spiego male. :D
Devo essermi un po' rincog@@@, credevo che stessi facendo un applet. Consideralo un segno dell'età e passaci sopra.
Il codice per il metodo main serve per visualizzare un applet (che non ha il main) all'interno del frame. Se non hai un applet lascialo stare. Tutto quello che devi fare per creare un jar eseguibile è
1). creare un file manifesto (ad es. Manifest.txt) e salvarlo nella cartella in cui hai il file *.class della tua applicazione
2). posizionarti con la riga di comando dos nella cartella in cui hai salvato il file Manifest e il file class
3). lanciare jar con un riga come questa:
jar mcf NomeManifest.txt NomeArchivio.jar NomeClasse.class
dove NomeClasse.class è il nome del file *.class generato dalla compilazione del tuo codice java. Tutto questo se hai una classe sola (com'è il nostro caso credo).
Se il tuo programma visualizza l'output sulla riga di comando un jar eseguibile non va bene, perchè non ha una "riga di comando". Devi reindirizzare l'output su un componente visibile (ad esempio una TextArea in un frame).
Ciao.
Originally posted by "PGI"
Se capisci poco è perchè spiego male. :D
Devo essermi un po' rincog@@@, credevo che stessi facendo un applet. Consideralo un segno dell'età e passaci sopra.
Il codice per il metodo main serve per visualizzare un applet (che non ha il main) all'interno del frame. Se non hai un applet lascialo stare. Tutto quello che devi fare per creare un jar eseguibile è
1). creare un file manifesto (ad es. Manifest.txt) e salvarlo nella cartella in cui hai il file *.class della tua applicazione
2). posizionarti con la riga di comando dos nella cartella in cui hai salvato il file Manifest e il file class
3). lanciare jar con un riga come questa:
jar mcf NomeManifest.txt NomeArchivio.jar NomeClasse.class
dove NomeClasse.class è il nome del file *.class generato dalla compilazione del tuo codice java. Tutto questo se hai una classe sola (com'è il nostro caso credo).
Se il tuo programma visualizza l'output sulla riga di comando un jar eseguibile non va bene, perchè non ha una "riga di comando". Devi reindirizzare l'output su un componente visibile (ad esempio una TextArea in un frame).
Ciao.
Beh, io ho più classi, ho quelle con le eccezzioni, il vero e proprio stack, il test dello Stack (main) e una Classe dove ho i dipi di dato da usare..
Grazie mille, sono alle preime armi come avrai capito!
Io sono alle prime armi in continuazione, troppe classi da provare! :D
Se hai più file class da inserire è sufficiente un piccolo cambiamento del comando
jar mcf NomeManifest.txt NomeArchivio.jar *.class
Così infila nel jar tutti i file con estensione *.class che trova nella directory.
Ciao.
Ora non mi da più errori, però se io lo lancio non fa nulla, non mi apre la schermata di dos e me lo fa girare, come mai?
Ora non mi da più errori, però se io lo lancio non fa nulla, non mi apre la schermata di dos e me lo fa girare, come mai?
Ora non mi da più errori, però se io lo lancio non fa nulla, non mi apre la schermata di dos e me lo fa girare, come mai?
Ora non mi da più errori, però se io lo lancio non fa nulla, non mi apre la schermata di dos e me lo fa girare, come mai?
Ora non mi da più errori, però se io lo lancio non fa nulla, non mi apre la schermata di dos e me lo fa girare, come mai?
Lo lanci da dos o con "doppio click" sul file jar?
In quest'ultimo caso, poichè javaw non ha una console, devi ridirigere l'output del tuo programma su un componente visibile (es. Frame+TextArea), altrimenti l'applicazione inizia e finisce senza che si veda alcunché.
Se lo lanci da dos (java -jar NomeArchivio.jar) allora dovrebbe visualizzare l'output.
Ciao.
Ho un problema con il compilatore. Quando compilo un file .java la finestra del javac mi si apre e chiude subito. Se non ci sono errori lo compila, ma quando ci sono errori li mostra per un attimo ma la finestra si chiude subito e quindi non si possono vedere quali sono. Quale può essere il motivo?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.