PROBLEMA Creare eseguibile da progetto Java

Calcifer92

Nuovo Utente
38
3
Ho fatto un programmino java con tanto di GUI, ma non riesco a creare un eseguibile funzionante.
Ho usato il pulsante "clean and build" di netbeans, mi crea l'eseguibile, parte, ma non funziona come dovrebbe: nell'ambiente di programmazione faceva quello che doveva fare, invece nell'eseguibile i pulsanti non fanno quello per cui sono stati programmati ò.ò

Why?
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,918
11,562
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Domanda troppo vaga
in Java non esistono eseguibili (ossia dei .exe come in Windows), ma solo classi con un main col codice da eseguire (il cui pacchetto .jar viene creato dall'ambiente, nel tuo caso Netbeans);
a parte questo se il programma non funziona come dovrebbe significa che c'è qualche errore di programmazione o qualcosa di cui non hai tenuto conto. Sicuro di aver catturato bene le azioni sui pulsanti?
 

Calcifer92

Nuovo Utente
38
3
Sì.
Ho controllato e ho capito che il problema è dato dalla creazione di una socket:
1) Nell'ambiente di programmazione si connette e la connessione va a buon fine.
2) Dall'eseguibile mi cattura una IOException, il cui messaggio è il server a cui ho tentato la connessione.

strano o no?

Riporto il metodo che dà problemi con il .jar
Codice:
public void Connect() throws IOException, SocketException {

        System.out.println("Connessione in corso...");
    
        datSock = new Socket(server, port);
        
        System.out.println("sto per ricevere il messaggio..."); //non esce su console
        FromServer = new BufferedReader(new InputStreamReader(datSock.getInputStream()));

        System.out.println("leggo...");

        String mess = FromServer.readLine();
        System.out.println("HO RICEVUTO: " + mess);

      
    }

edit: se il problema è che la JVM avvia il software in una sandbox, come faccio a uscire dalla sandbox?
 
Ultima modifica:

BAT

Moderatore
Staff Forum
Utente Èlite
22,918
11,562
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Sull'istruzione
System.out.println("leggo;
immagino sia un errore di battitura (mancano le virgolette di chiusura stringa e la parentesi finale)
FromServer = new(...)
immagino sia una variabile, però è una cattiva abitudine: la maiuscola in Java andrebbe usata per i nomi di classe/interfaccia;
il compilatore te la passa ma è contro le convenzioni, chi programma in Java potrebbe trovare confuso il tuo codice.
Altra cattiva abitudine: il nome del metodo è Connect(), anche qui hai usato una maiuscola, le convenzioni vorrebbero
la minuscola iniziale sia per i nomi dei metodi che per quelli di variabile.
Ti suggerisco di seguire le convenzioni perché potresti aver problemi: per esempio ti potrebbe capitare di non poter compilare un
codice perché invochi un metodo (che inizia per maiuscola) che per pura sfortuna ha lo stesso nome di una classe/costruttore.

Non so dire se l'errore dipenda da una sandbox, in teoria se funziona in Netbeans deve funzionare anche "nudo e crudo"
 
Ultima modifica:
  • Mi piace
Reazioni: Calcifer92

Calcifer92

Nuovo Utente
38
3
Sì, hai ragione sulla convenzione maiuscole/minuscole; comunque la chiusura di stringa e la parentesi ci sono sull'istruzione che dici tu XD

Ho scritto della sandbox perché, quando compilo, netbeans mi dà questi warning in rosso, quindi pensavo ci fosse qualche problema di "firma"
Codice:
To run this application from the command line without Ant, try:
javaws "C:\***\dist\launch.jnlp"
Codice:
Warning: Unsigned and self-signed WebStart applications and Applets are deprecated from JDK7u21 onwards due to security reasons.
         To ensure future correct functionality please sign WebStart applications and Applets using trusted certificate.
 
Ultima modifica:

BAT

Moderatore
Staff Forum
Utente Èlite
22,918
11,562
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Ti sta chiedendo di firmare l'applet con una firma certificata; comunque si tratta di un Warning non di un errore, dovresti poter continuare;
per far sparire il warning dovrebbe essere possibile configurare Netbeans per compilare anche cose che incontrano cose "deprecate" (sconsigliate). Non ricordo come si fa ma con un po' di ricerche te la cavi.
Dopo le prove però rimetterei le cose come stanno (con i warning), perché sono utili a segnalare eventuali classi/metodi che in futuro potrebbero non essere più supportati
 
  • Mi piace
Reazioni: Calcifer92

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili