Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    48

    [JAVA] File java eseguibile con operazioni pianificate

    Ciao!
    Ho creato un piccolo programmino e vorrei che venisse eseguito ogni giorno in modo automatico, al suo interno contiene poi delle condizioni affinché il suo codice venga eseguito o meno in base a dei giorni prestabiliti.
    La mia domanda è questa: tramite le operazioni pianificate di windows posso lanciare il programma? Ovvero, è direttamente eseguibile? Come?

    Per completezza aggiungo il codice:

    codice:
    package eliminabackup;
    
    import java.io.File;
    import java.util.*;
    
    public class MiaData {
    
        Calendar giorno;
    
        public MiaData() {
            giorno = Calendar.getInstance();
    
        }
    
        public void cancSettimana() {
    
            if (giorno.get(Calendar.DAY_OF_WEEK) == 2) {//se è lunedì
    
                giorno.add(Calendar.DAY_OF_MONTH, -14); //vai al lunedì di due settimane prima
    
                for (int i = 0; i < 7; i++) {
    
                    if (giorno.get(Calendar.DAY_OF_WEEK) != 6) { //se non è venerdì,
    
                        //allora genera una stringa con il nome della cartella da cancellare
                        String anno = "" + giorno.get(Calendar.YEAR);
                        String mese;
                        String giorno_del_mese;
    
                        //MESE
                        int m = (this.giorno.get(Calendar.MONTH) + 1);
                        if (m < 10) {
                            mese = "0" + m;
                        } else {
                            mese = "" + m;
                        }
    
                        //GIORNO
                        int g = this.giorno.get(Calendar.DAY_OF_MONTH);
                        if (g < 10) {
                            giorno_del_mese = "0" + g;
                        } else {
                            giorno_del_mese = "" + g;
                        }
    
                        String nomeCartella = "" + anno + mese + giorno_del_mese;
    
                        File directory = new File("C:/Documents and Settings/MyPC/Desktop/Prova/" 
                        + nomeCartella);
                        File[] files = directory.listFiles();
                        for (File f : files) {
                            f.delete();
                        }
                        directory.delete();
                    }// end if non è venerdì
                    giorno.add(Calendar.DAY_OF_MONTH, +1);
                }//end for
            }//end if è lunedì
        }//end metodo
    }//end class
    Grazie!!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] File java eseguibile con operazioni pianificate

    Originariamente inviato da Birgy
    tramite le operazioni pianificate di windows posso lanciare il programma? Ovvero, è direttamente eseguibile? Come?
    Certo, devi comunque lanciare java.exe passando i dovuti parametri.

    Chiaramente bisogna anche vedere se la tua applicazione l'hai impacchettata in un file jar (e ammesso che il Manifest l'hai creato correttamente) e in tal caso: java -jar tua_app.jar

    Se invece hai dei file .class "sfusi" allora devi impostare il classpath (opzione -classpath) e quindi indicare il nome completamente qualificato della classe (es. com.prova.Pippo).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    48
    Attualmente ho due file "sfusi" .class:
    1) MiaData.class
    2) Main.class
    Come faccio ad impostare il classpath?
    Come si impacchettata in un file jar?
    Grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Birgy
    Attualmente ho due file "sfusi" .class:
    1) MiaData.class
    2) Main.class
    Come faccio ad impostare il classpath?
    Vedo che hai usato i package, hai dichiarato quella classe nel package 'eliminabackup' (immagino anche per Main ... non solo per MiaData).

    La regola principale sui package è che i nomi dei package si devono sempre "riflettere" nella struttura delle directory.
    Quindi indipendentemente dal fatto che hai file .class "sfusi" o messi dentro un jar, i tuoi .class devono stare sotto una cartella chiamata "eliminabackup" (se fai un jar, dentro il jar ci deve essere la cartella "eliminabackup" .... non il jar in sé sotto tale cartella!). Questo è tassativo!

    Supponi di aver messo i tuoi .class nella directory:

    C:\Progetto\eliminabackup

    Allora dovresti lanciare con:

    java -classpath C:\Progetto eliminabackup.Main

    In "classpath" ci deve stare C:\Progetto, non C:\Progetto\eliminabackup. Perché lì sotto deve trovare il package "radice" che è eliminabackup.

    Originariamente inviato da Birgy
    Come si impacchettata in un file jar?
    Ti conviene leggere il tutorial ... altrimenti ripeto sempre le stesse cose.

    Packaging Programs in JAR Files
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    48
    Sia MyData.class che Main.class sono nello stesso package.

    In particolare si trovano in questo percorso:

    C:\Documents and Settings\MyPC\Documenti\NetBeansProjects\EliminaBa up\build\classes\eliminabackup

    e mentre cercavo questo percorso ho trovato nella cartella contenente il progetto un file manifest e nella cartella dist un file Executable Jar File chiamato EliminaBackup, possibile che NetBeans abbia creato automaticamente il file jar?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Birgy
    Sia MyData.class che Main.class sono nello stesso package.
    Ok, come immaginavo.

    Originariamente inviato da Birgy
    In particolare si trovano in questo percorso:

    C:\Documents and Settings\MyPC\Documenti\NetBeansProjects\EliminaBa up\build\classes\eliminabackup
    Se volessi lanciare la applicazione usando direttamente i class sfusi lì sotto, dovresti fare come ho detto sopra cambiando solo il path (e metterlo tra " "):

    java -classpath "C:\Documents and Settings\........\build\classes" eliminabackup.Main

    Originariamente inviato da Birgy
    possibile che NetBeans abbia creato automaticamente il file jar?
    Possibile .... ma non conoscendo NetBeans non posso dire altro.
    Verifica solo che nel manifest ci sia l'attributo:

    Main-Class: eliminabackup.Main

    Perché questo è importante. Infatti se lanci:

    java -jar nomefile.jar

    Il nome della classe con il main() lo deve sapere ... no? E lo "sa" appunto dal Main-Class nel manifest.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    48
    Se volessi lanciare la applicazione usando direttamente i class sfusi lì sotto, dovresti fare come ho detto sopra cambiando solo il path (e metterlo tra " "):

    java -classpath "C:\Documents and Settings\........\build\classes" eliminabackup.Main
    ho provato a farlo, ma il risultato è questo:
    Immagini allegate Immagini allegate

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Birgy
    ho provato a farlo, ma il risultato è questo:
    Hai più versioni di Java .... e ci sono incompatibilità.

    Il tuo programma l'hai compilato per Java 5 (NetBeans o usa un JDK 5 oppure usa un JDK 6 ma è stata impostata la compilazione con target Java 5). Insomma ... le tue classi sono "targate" con versione 49.0 che vuol dire "Java 5".
    Mentre il java.exe che hai lanciato è di un JRE di versione inferiore (es. 1.4).

    Non solo quale (e dove) java.exe hai .... dipende da cosa hai in PATH.

    Ripeto: è solo questione di versione. Fai java -version e vedi quale hai.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    48
    E ora cosa devo fare?!?
    Immagini allegate Immagini allegate

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Birgy
    E ora cosa devo fare?!?
    Mazza .... hai una 1.3!! Un po' vecchiotta.

    Ovviamente non posso certo sapere io cosa/dove hai installato i software. Comunque trova il java.exe di un JDK/JRE almeno versione 5 e fai in modo che sia in "PATH" (o digita il path completo o fai un batch che semplifica il lancio).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.