Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problemi con l'installazione di java...HELP

    ciao a tutti...
    ho un problema con l'installazione di Java...
    dopo aver installato Java SE Development 6.0 e dopo aver inserito nella variabili dell'utente la variabile PATH con il percorso della cartella "bin" ho provato a far eseguire un programma.java..
    il risultato è un errore in cui il messaggio è: package prog.io does not exist...
    in effetti la cartella prog non esiste...
    sul sito di un professore univeristario ho trovato un file zippato con tutti i file mancati che vanno a comporre la cartella "prog"...
    PROBLEMA:
    1- la cartella prog devo metterla all'interno della cartella bin o no???
    2- devo creare una variabile d'ambiente con il percorso della cartella prog?? e se si, è una variabile d'utente o di sistema???

    grazie per l'aiuto aspetto molte risposte..ciao!!!

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

    Re: problemi con l'installazione di java...HELP

    Originariamente inviato da pieroJdk
    1- la cartella prog devo metterla all'interno della cartella bin o no???
    No affatto. Non dovresti mai mettere roba "tua" (sorgenti, progetti, ecc...) sotto la "home" di un JDK/JRE.

    La puoi mettere dovunque. (vedi anche risposta appena sotto)


    Originariamente inviato da pieroJdk
    2- devo creare una variabile d'ambiente con il percorso della cartella prog?? e se si, è una variabile d'utente o di sistema???
    Sì e no. Nel senso che qui si va su una questione che riguarda il "classpath" e i package.

    Il classpath è semplicemente un elenco di directory/jar che la JVM usa per cercare le classi. E si può impostare in diversi modi/livelli.
    I package sono quelli che dichiari nel sorgente con package bla.bla; all'inizio. E la regola fondamentale sui package è che si devono sempre "riflettere" nella struttura delle cartelle (anche dentro un jar)!!

    Immagina una classe Prova nel package prog.io (quindi nome qualificato: prog.io.Prova). Il file Prova.class compilato deve stare sotto un path prog/io, questo è tassativo. Anche il sorgente sarebbe meglio che sia sotto una prog/io.
    Supponi che tutto sia sotto una directory C:\Esempi

    Si avrebbe: C:\Esempi\prog\io\Prova.java. Il Prova.class andrà poi a finire sotto la 'io'.
    Il classpath deve essere tale per cui la JVM, conoscendo il package e sapendo bene che deve "riflettersi" nella struttura delle cartelle, possa trovare Prova.class. Quindi in classpath ci deve essere, in un modo o nell'altro, C:\Esempi. Ho detto in un modo o nell'altro perché puoi specificarlo come path assoluto oppure come path "relativo" alla directory corrente.

    Per farti capire il processo facendolo tutto da riga di comando:

    codice:
    cd C:\Esempi
    set CLASSPATH=.
    javac prog\io\Prova.java
    java prog.io.Prova
    In classpath c'è il '.' cioè = directory "corrente". Visto che mi sono già spostato in C:\Esempi, allora .... questa è in classpath!
    Il resto è semplicemente la compilazione/avvio supponendo che Prova abbia il solito main().
    A javac va passato un "path", a java il nome qualificato della classe (non un path!).

    Più chiaro ora?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    no non ci sono...
    non capisco nel tuo esempio la cartella Esempi 1-dov'è posizionata e 2- cosa contiene...
    di solito ci dovrebbe essere una cartella bin e una prog...solo che quando eseguo un programma la cartella prog non la trova e non capisco xkè...
    non so dove metterla e cosa mettere nel CLASSPATH..
    invece ke farlo da codice ho provato a mettere una variabile di sistema col nome CLASSPATH con valore=il percorso della cartella prog..ma il risultato è sempre quello...
    aiutatemi..

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    la cartella Esempi 1-dov'è posizionata
    C:\Esempi ....

    Originariamente inviato da pieroJdk
    e 2- cosa contiene...
    Una directory 'prog' ... che a sua volta contiene una directory 'io' che a sua volta contiene Prova.java

    Avevo anche scritto il path completo: C:\Esempi\prog\io\Prova.java .... non so, più di così ...

    Originariamente inviato da pieroJdk
    di solito ci dovrebbe essere una cartella bin
    Di solito .... dove?? Chi l'ha detto??

    Originariamente inviato da pieroJdk
    e una prog...solo che quando eseguo un programma la cartella prog non la trova e non capisco xkè...
    non so dove metterla e cosa mettere nel CLASSPATH..
    invece ke farlo da codice ho provato a mettere una variabile di sistema col nome CLASSPATH con valore=il percorso della cartella prog..ma il risultato è sempre quello...
    aiutatemi..
    Senti ... faccio un altro esempio con tanto di sorgente??

    Contenuto di Prova.java:
    codice:
    package mio.test;
    
    public class Prova {
        public static void main(String[] args) {
            System.out.println("Hello World");
        }
    }
    E una struttura del genere:
    codice:
    C:
     \
      Esempi
       \
        mio
         \
          test
           \
            Prova.java
    Il path completo al sorgente è: C:\Esempi\mio\test\Prova.java

    Per compilare ed eseguire questo programmino devi aprire un "prompt" dei comandi ed eseguire i seguenti comandi:

    1) Devi spostarti nella directory C:\Esempi. Quindi:
    cd C:\Esempi

    2) Imposti il classpath con la variabile CLASSPATH in modo che contenga la directory "corrente" ('.' = directory corrente). Quindi:
    set CLASSPATH=.

    3) Compili (e ricordo, sei in C:\Esempi):
    javac mio\test\Prova.java

    4) Lanci:
    java mio.test.Prova
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    no no calma...in questo modo io dovrei ogni volta settare la variabile CLASSPATH???
    io la cartella prog la devo usare per gli import perchè contiene tutte le classi che devo usare nei programmi tipo ConsoleInputManager (per leggere da tastiera) e ConsoleOutputManager (per stampare a video) quindi i miei programmi dovranno iniziare con:

    import prog.io.*;

    per poter utilizzare tutte le classe contenute..
    ma se questa cartella non la metto dentro la cartella Java sul disco come faccio a fare i programmi????

    è questo il problema...
    e poi dovrei settare la variabile CLASSPATH con il percorso della cartella prog solo ke non l'accetta...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    in questo modo io dovrei ogni volta settare la variabile CLASSPATH???
    No, puoi anche impostarlo in modo che sia "predefinito" per l'utente o per il sistema. Su Windows il solito Pannello di controllo -> Sistema -> Avanzate -> Variabili d'ambiente.

    La questione è cosa mettere in CLASSPATH. Se devi usare librerie esterne, devi elencare i path a tutti i jar interessati. Ad esempio vuoi usare la libreria JDOM (è una libreria per la gestione di documenti XML)? Fortunatamente fornisce solo 1 jar. Quindi in classpath metterai anche C:\DoveStaJDOM\jdom.jar.
    Poi eventualmente altro di "tuo". Se fai sviluppo "casuale" dal prompt dei comandi, nel senso che quando vuoi compilare/eseguire un tuo programma ti metti nella directory che fa da "base" degli eventuali package delle tue classi, allora ti conviene mettere in classpath anche il '.' ovvero appunto la directory corrente.

    Originariamente inviato da pieroJdk
    io la cartella prog la devo usare per gli import perchè contiene tutte le classi che devo usare nei programmi tipo ConsoleInputManager (per leggere da tastiera) e ConsoleOutputManager (per stampare a video) quindi i miei programmi dovranno iniziare con:

    import prog.io.*;

    per poter utilizzare tutte le classe contenute..
    ma se questa cartella non la metto dentro la cartella Java sul disco come faccio a fare i programmi????
    Queste classi ConsoleInputManager/ConsoleOutputManager le hai come file .class "sciolti" o dentro un jar?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    sono tutte classi sciolte .class....
    io nelle variabili di sistema ho settato una variabile PATH con il percorso della cartella bin
    e nella variabile CLASSPATH ho messo il "."...
    la cartella prog l'ho messa nella cartella di java..
    quindi se la cartella bin ha il percorso C:\Program Files\Java\jdk1.6.0_16\bin
    la cartella prog ha percorso C:\Program Files\Java\jdk1.6.0_16\prog

    il problema però continua a persistere..ovvero il prog.io per il compilatore continua a non esistere..
    qual è il problema???
    cosa sbaglio???

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pieroJdk
    io nelle variabili di sistema ho settato una variabile PATH con il percorso della cartella bin
    Questo è ok ed è indispensabile se vuoi lanciare javac.exe java.exe o gli altri tools del JDK senza dover indicare il path completo ogni volta.

    Originariamente inviato da pieroJdk
    e nella variabile CLASSPATH ho messo il "."...
    la cartella prog l'ho messa nella cartella di java..
    quindi se la cartella bin ha il percorso C:\Program Files\Java\jdk1.6.0_16\bin
    la cartella prog ha percorso C:\Program Files\Java\jdk1.6.0_16\prog

    il problema però continua a persistere..ovvero il prog.io per il compilatore continua a non esistere..
    qual è il problema???
    Che forse non hai ancora capito a cosa serve e come viene usato il "classpath".
    L'ho detto prima ma posso anche ripeterlo meglio: il "classpath" è semplicemente un elenco di: a) Directory b) File .jar (anche eventualmente .zip, sebbene non sia comune/tipico).

    Questo elenco viene usato dalla JVM per "trovare" le classi.

    Hai detto che quelle due classi le hai come file .class "sciolti". Bene se il package dichiarato per quelle classi è prog.io allora devono stare sotto una directory prog\io ma la "base", cioè dove sta la 'prog' la puoi scegliere tu!

    Immagina di avere questi .class in:

    C:\Libs\prog\io\ConsoleInputManager.class
    C:\Libs\prog\io\ConsoleOutputManager.class

    E in classpath ci metti le seguenti cose:

    CLASSPATH=.;C:\Libs

    Ovvero '.' (directory corrente) e C:\Libs

    Tu ti trovi ad esempio come directory corrente in C:\Esempi dove hai il tuo programmino di prova. Quando lo lanci la JVM va a cercare la classe prog.io.ConsoleInputManager di cui il tuo programmino ha bisogno.

    Cosa fa la JVM?? Scandisce il classpath e sapendo che i package si "riflettono" nella struttura delle directory, compone dei path man mano per trovare la classe.

    Il primo elemento in classpath è '.' e siccome ti trovi in C:\Esempi la JVM cerca:
    C:\Esempi\prog\io\ConsoleInputManager.class
    Esiste? Supponiamo di no.

    Poi il secondo elemento è C:\Libs e la JVM cerca:
    C:\Libs\prog\io\ConsoleInputManager.class
    Esiste? Sì, ho detto prima dove stavano queste due classi. Quindi la trova. Punto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    ok..finalmente ce l'ho fatta!!
    l'errore ke facevo è ke specificavo tutto il percorso nella CLASSPATH anzichè fermarmi alla "radice"...
    ti ringrazio x l'aiuto..

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.