Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [JAVA] Aiutate un principiante!

    Salve, mi scuso per la banalità del quesito ma ho bisogno di aiuto: ho scaricato e installato il pacchetto J2sdk1.4.2_03 e come auspicato mi sono ritrovato in C:\ l'omonima directory comprensiva di sottocartella \bin dove si trovano gli eseguibili javac.exe e java.exe; come ho letto in un libro ho settato la variabile d'ambiente PATH con il percorso dei due file sopra citati, ma purtroppo se tento di compilare dalla shell del DOS un file del tipo HelloWorld.class memorizzato in una directory C:\Prove_Java mediante il comando C:\Prove_Java>javac HelloWorld.java ottengo il messaggio "javac non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch". Notando fra le variabili d'ambiente anche una variabile PATHEXT dove sono elencate le estensioni del tipo .BAT;.EXE;.COM; ecc. ho pensato di aggiungere all'elenco .JAVA e .CLASS credendo che il S.O quando trova una delle estensioni elencate in PATHEXT vada a cercare in PATH il percorso dell'eseguibile, ma anche in questo caso si ripresenta il messaggio di prima. Il S.O utilizzato è Windows XP e ringrazio chi mi vorrà aiutare.

    Il mondo è diviso in 10 gruppi di persone... chi capisce il binario e chi no!

    http://www.pratesi.net

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Nella variabile PATH devi inserire il percorso della cartella bin che si trova all'interno della cartella di java. Prova anche a riavviare il pc per rendere effettive le modifiche.

  3. #3
    Io ho selezionato la variabile Path e l'ho modificata aggiungendo il percorso %SystemRoot%\j2sdk1.4.2_03\bin; che è di fatto quello della directory che contiene javac.exe e java.exe; ho provato anche a riavviare ma il problema persiste e sinceramente essendo questa una cosa in teoria abbastanza semplice non capisco proprio dove mettere le mani!
    Qualsiasi suggerimento resta ben accetto... grazie.
    Il mondo è diviso in 10 gruppi di persone... chi capisce il binario e chi no!

    http://www.pratesi.net

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Prova a scrivere il percorso esbplicito C:\... senza system root;

    Se lanci javac dandogli il perorso completo funziona?

  5. #5
    Se esplicito C:\ l'eseguibile funziona e viene creato il file HelloWorld.class (cioè il bytecode che deve essere interpretato dalla JVM... se ho ben capito!).

    Sorge adesso un ulteriore problema: se provo a lanciare il comando c:\Prove_Java>java HelloWorld.class viene restituito un errore del genere: "Exception in thread main java.lang.NoClassDefFoundError: HelloWorld/class". Per quanto ho capito ciò è dovuto al fatto che deve essere settata un'altra variabile d'ambiente chiamata CLASSPATH la quale indica dove si trovano le classi base da caricare. Come faccio a capire a quale file devo inizializzare CLASSPATH? Dovrebbe essere un file della sottocartella \lib, ma quale? Un esempio relativo a jdk1.3 riporta CLASSPATH=C:\java\lib\classes.zip, ma io in \lib non ho nessun file classes.zip. Guardando la guida del j2sdk1.4.2 pare che il file possa essere tools.jar ma l'errore persiste anche con questa inizializzazione!
    In attesa di buone nuove grazie per l'aiuto e la pazienza.
    Il mondo è diviso in 10 gruppi di persone... chi capisce il binario e chi no!

    http://www.pratesi.net

  6. #6
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    quando lanci la classe non devi scrivere l'estensione .class ma solo il nome della classe

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    %SystemRoot% è la cartella di Windows non la directory principale!!
    Nel path deve esserci scritto questo:
    codice:
    PATH=[quello che c'era prima];C:\j2sdk1.4.2_03\bin;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Ok per il %SystemRoot%, io l'avevo messo senza poi guardare bene a cosa corrispondeva... comunque la precisazione è più che ben accetta!

    Per quanto riguarda la variabile PATHEXT mi sai dire se è corretto aggiungere alle estensioni già presenti quelle .java e .class oppure non c'entra niente con tutta questa storia?

    Ad ora rimane comunque il problema che anche tentando di eseguire il comando C:\Prove_Java>java HelloWorld ottengo il solito errore citato in precedenza che comunque riporto nuovamente per completezza:

    Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

    Ribadisco inoltre che non ho ancora capito come settare la variabile d'ambiente CLASSPATH che pare rivesta un importanza fondamentale.
    Per scrupolo riporto anche il file .java che vado a compilare:

    class HelloWorld {
    public static voin main(String args[]) {
    System.out.println("Hello World!");
    }
    }

    Non vi dico l'immenso bisogno che ho di imparare al più presto un po di Java ma vi chiedo ancora un po di pazienza e qualsiasi suggerimento possa sembrarvi utile!

    Ciao :quipy:
    Il mondo è diviso in 10 gruppi di persone... chi capisce il binario e chi no!

    http://www.pratesi.net

  9. #9
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ma sei sicuro di non aver messo .class nel comando java <NomeClasse>?

    Te lo dico perche il comando java interpreta i punti come come dei separatori tra il nome di un package e il nome della classe, cosi se scrivi

    java Hello.class

    è come se dicessi di lanciare la classe class che si trova nel package Hello, ovvero di lanciare la classe class che si trova nella cartella Hello\class

    Se il tuo messaggio d'errore è

    Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class

    mi fa pensare proprio a questo.

    La variabile classpath non mi sembra centri con questo.

  10. #10
    Mi rendo conto che molto probabilmente, anzi... di sicuro, l'errore dipende da una mia distrazione, però ti posso garantire che la sequenza di istruzioni da me eseguite è quella corretta.

    Inoltre nella guida sono andato a cercare seguendo il package java.lang la descrizione dell'eccezione restituita e dice che viene lanciata quando la JVM o un istanza del ClassLoader tenta di caricare la definizione di una classe e la definizione non viene trovata!
    In ragione di questo ritengo che CLASSPATH è la soluzione... magari se trovassi qualcuno che ha installato il j2sdk1.4.2 potrebbe controllare come è inizializzata questa variabile... adesso io sto provando secondo tentativi reiterati, ma non è il massimo del divertimento!

    Grazie di nuovo e ciao.
    Il mondo è diviso in 10 gruppi di persone... chi capisce il binario e chi no!

    http://www.pratesi.net

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 © 2026 vBulletin Solutions, Inc. All rights reserved.