PDA

View Full Version : [java]eseguibile jar


mikmontana
27-06-2010, 13:30
Ciao io ho fatto il mio programmino in java con netbeans ho fatto build e mi ha creato il .jar ma ora se faccio doppio click sopra mi si apre la finestra di dos e mi si richiude subito senza poterlo usare... l'unico modo per farlo andare è copiare la stringa che dà netbeans nell'esegui di windows e farla andare, ma io volevo forlo partire solo con il doppio click...
xke non riesco a utilizzarlo??

ndakota
27-06-2010, 13:45
prova a mettere una


new Scanner(System.in).nextLine();


prima della fine del programma. e importa


import java.util.Scanner;

mikmontana
28-06-2010, 12:31
ho provato ma niente... da sempre lo stesso problema...
ma con che programma devo eseguirlo il .jar??

ndakota
28-06-2010, 12:37
In teoria è già un eseguibile: con nessuno. Allora non saprei :(

lovaz
28-06-2010, 12:40
java -jar j.jar

ndakota
28-06-2010, 12:49
java -jar j.jar

Così rimarrà aperto. Ma lui nell'op aveva detto di volerlo eseguibile con doppio click.

lovaz
28-06-2010, 17:52
Ops! Scusate...

Ma non c'è un'opzione (tasto dx sul collegamento) per far restare aperto
MSDOS Prompt? (non sono su win ora)

mikmontana
28-06-2010, 19:52
In teoria è già un eseguibile: con nessuno. Allora non saprei :(

Si ma io i .jar li ho associati a winrar, ho provato a cercare il java x aprirli ma nella cartella di jdk c'è ne sono tanti e non so se è quello giusto...

Cmq se lo apro con java -jar j.jar rimane aperto è solo se lo apro con doppio click che non funziona...

In alternativa non si può creare un .exe???

mikmontana
02-07-2010, 11:16
con la java virtual machine dice che non riesce a trovare la main class...

fbcyborg
02-07-2010, 18:31
Ma il Manifest file l'hai fatto bene?

mikmontana
03-07-2010, 15:40
cos'è??

fbcyborg
03-07-2010, 16:38
cos'è??

Guarda qui (http://it.lmgtfy.com/?q=jar+manifest&l=1).

fbcyborg
03-07-2010, 18:45
Ah, ok.
Io non uso Netbeans, perciò non sapevo bene come si faceva in questo IDE.

mikmontana
09-07-2010, 12:19
No però un attimo, se lui sta creando il file jar con Netbeans non ha necessità di sapere di Manifest (poi se lo sa meglio ancora).
Io credo che il problema è che nelle proprietà del progetto non hai assegnato un "file principale", cioè dove hai messo il tuo main.
Allora in Netbeansfai così:
apri il tuo progetto
tasto destro sul tuo progetto
poi vai su esegui (o run in inglese)
lì selezioni la tua "classe principale"
Poi compila e ricrea il jar, e prova ad avviarlo.
Non riesco a capire come devo selezionare la classe principale.
In teoria non è già selezionata se ho una classe sola??

fbcyborg
09-07-2010, 17:28
Dovrebbe esserci nella procedura di creazione del jar. Purtroppo non uso Netbeans, ma Eclipse, quindi non ti so aiutare, però dovrebbe esserci un modo per indicargliela.

PGI-Bis
09-07-2010, 17:50
se

"l'unico modo per farlo andare è copiare la stringa che dà netbeans nell'esegui di windows e farla andare"

allora

il suo jar era già eseguibile.

O no? Direi di sì, giusto?

Apri una linea di comando, copiaci dentro la stringa che ti da netbeans (java -jar "pippo/pappo/programma.jar").

Il programma funziona? Se funziona, e possibile che il tuo programma abbia un bug.

Quando lanci un programma java su windows con il doppio click il programma è eseguito con "javaw.exe".

"javaw.exe" segnala tutti gli errori che si ripercuotono sul metodo main con il messaggio "couldn't find main class". Ad esempio se io nel main facessi riferimento al contenuto di un File il cui percorso dipende dal valore della variabile "user.dir" e quel file non venisse trovato, perchè javaws e java.exe possono avere directory di lavoro diverse, allora javaws mi direbbe "couldn't find main class".

Il bug del tuo programma potrebbe essere questo, cioè il fatto di far riferimento direttamente o indirettamente ad una variabile di ambiente il cui valore è diverso quando il programma è lanciato con javaw. Per saperlo con certezza bisognerebbe spulciare il codice sorgente.

mikmontana
10-07-2010, 11:15
con la stringa di netbeans funziona.... non va solo con il doppio click...
posto il sorgente:

package spegnicomputerdaremoto;

import java.io.*;
import java.util.Scanner;

public class Main {


public static void main(String[] args)throws IOException {
String antani;
InputStreamReader input = new InputStreamReader (System.in);
BufferedReader tastiera = new BufferedReader (input);
System.out.println("Inserisci il nome o l'indirizzo ip del computer da spegnere : ");
antani = tastiera.readLine().trim();
String comando = "shutdown -s -m \\\\";
comando = comando + antani;
Runtime.getRuntime().exec(comando);

new Scanner(System.in).nextLine();

}

}

PGI-Bis
10-07-2010, 13:41
quel programma richiede una linea di comando, non puoi eseguirlo con javaw, devi per forza lanciarlo con java.exe.