[Java] Semplice programma hello world di java usando libreria di classi esterna
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
[Java] Semplice programma hello world di java usando libreria di classi esterna
Salve a tutti, sarà una cosa banale ma è tutta la mattina che cerco di capire dove sta il problema. Non ho trovato altre discussioni a proposito quindi ne apro una nuova..
dopo una reinstallazione di ubuntu ho il seguente problema.
ho una libreria di classi esterna si chiama prog creata per lo studio di alcune classi.
All'interno vi sono tre altre cartelle; io,doc, utili.
La classe che utilizzo si chiama ConsoleOutputManager e si trova dentro prog/io/
come facevo prima, copio la cartella prog in una cartella "myjavalib" posizionata nella directory radice "/",
quindi abbiamo /myjavalib/prog/ e tutto il resto all'interno.
scrivo il seguente semplice programmino
import prog.io.ConsoleOutputManager;
public class Prova {
public static void main (String args[]) {
System.out.println("ciao");
ConsoleOutputManager out = new ConsoleOutputManager();
out.println("hello class");
}
}
compilo
fr4nk@fr4nk-laptop:~/Documenti$ javac -cp /myjavalib Prova.java
tutto ok
eseguo
fr4nk@fr4nk-laptop:~/Documenti$ java Prova
ciao
Exception in thread "main" java.lang.NoClassDefFoundError: prog/io/ConsoleOutputManager
at Prova.main(Prova.java:31)
non comprendo perchè.
Se qualcuno mi sa spiegare, sarà una stupidagine ma non riesco a capire, prima funzionava adesso no.
Uso la versione di java 5 su ubuntu 7.10..
dopo una reinstallazione di ubuntu ho il seguente problema.
ho una libreria di classi esterna si chiama prog creata per lo studio di alcune classi.
All'interno vi sono tre altre cartelle; io,doc, utili.
La classe che utilizzo si chiama ConsoleOutputManager e si trova dentro prog/io/
come facevo prima, copio la cartella prog in una cartella "myjavalib" posizionata nella directory radice "/",
quindi abbiamo /myjavalib/prog/ e tutto il resto all'interno.
scrivo il seguente semplice programmino
import prog.io.ConsoleOutputManager;
public class Prova {
public static void main (String args[]) {
System.out.println("ciao");
ConsoleOutputManager out = new ConsoleOutputManager();
out.println("hello class");
}
}
compilo
fr4nk@fr4nk-laptop:~/Documenti$ javac -cp /myjavalib Prova.java
tutto ok
eseguo
fr4nk@fr4nk-laptop:~/Documenti$ java Prova
ciao
Exception in thread "main" java.lang.NoClassDefFoundError: prog/io/ConsoleOutputManager
at Prova.main(Prova.java:31)
non comprendo perchè.
Se qualcuno mi sa spiegare, sarà una stupidagine ma non riesco a capire, prima funzionava adesso no.
Uso la versione di java 5 su ubuntu 7.10..
- Lord_Dex
- Prode Principiante
- Messaggi: 235
- Iscrizione: venerdì 11 maggio 2007, 12:59
- Località: Bologna
- Contatti:
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
sono le classi del libro di testo da cui studio.. provo a ricopiarle dal cd del libro e vediamo..Lord_Dex ha scritto: è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
è sicuro che riesce a trovare la tua libreria??
per me quel "myjavalib" sarebbe "/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/" e dentro ci andrebbe la libreria compattata in un .jar
prog che formato ha??
forse puoi anche specificare il classpath delle librerie in fase di lancio col comando
java -classpath $DIR Prova
per me quel "myjavalib" sarebbe "/usr/lib/jvm/java-6-sun-1.6.0.07/jre/lib/ext/" e dentro ci andrebbe la libreria compattata in un .jar
prog che formato ha??
forse puoi anche specificare il classpath delle librerie in fase di lancio col comando
java -classpath $DIR Prova
- Lord_Dex
- Prode Principiante
- Messaggi: 235
- Iscrizione: venerdì 11 maggio 2007, 12:59
- Località: Bologna
- Contatti:
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
ma hai copiato quel package come sorgente e poi l'hai compilato te o era già compilato?
prova cmq ad eliminare la cartella prog e utilizzare direttamente /io/ConsoleOutputManager
prova cmq ad eliminare la cartella prog e utilizzare direttamente /io/ConsoleOutputManager
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
franciccio81 ha scritto:sono le classi del libro di testo da cui studio.. provo a ricopiarle dal cd del libro e vediamo..Lord_Dex ha scritto: è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
Nulla ,sempre lo stesso errore.. Posso assicurare al 100% che prima funzionava tutto..
fr4nk@fr4nk-laptop:~/Documenti$ java Prova
ciao
Exception in thread "main" java.lang.NoClassDefFoundError: prog/io/ConsoleOutputManager
at Prova.main(Prova.java:31)
Mi chiedo: questo tipo di errore dovrebbe essere per una classe non trovata.. ma io ho controllato tutto ed è tutto al suo posto.
forse per il tipo di jvm? a quanto vedo è installata sun java 6 web start e sun java 5 runtime.. puo' dare dei problemi?
- Lord_Dex
- Prode Principiante
- Messaggi: 235
- Iscrizione: venerdì 11 maggio 2007, 12:59
- Località: Bologna
- Contatti:
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
ti spiego quando si compila un package si utilizza come metodologia:
quindi se te metti tutto all'interno di un altra cartella del tipo prog/miopackage/MiaClasse.java
andrebbe ricompilato teoricamente tutto con il nuovo path completo.
Per questo ti consiglio di copiare tutto il package come era originariamente cioè di mettere direttamente le varie cartelle (io, doc. utils, etc) nella stessa cartella della classe Prova.java (ovviamente poi modifica anche l'import all'interno di quest'ultima)
Codice: Seleziona tutto
javac miopackage/MiaClasse.javaandrebbe ricompilato teoricamente tutto con il nuovo path completo.
Per questo ti consiglio di copiare tutto il package come era originariamente cioè di mettere direttamente le varie cartelle (io, doc. utils, etc) nella stessa cartella della classe Prova.java (ovviamente poi modifica anche l'import all'interno di quest'ultima)
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
In poche parole il libro fornisce un file prog.tar che all'interno contiene tutto cio'Lord_Dex ha scritto: ma hai copiato quel package come sorgente e poi l'hai compilato te o era già compilato?
prova cmq ad eliminare la cartella prog e utilizzare direttamente /io/ConsoleOutputManager
Seguendo i consigli del libro estraendo il file prog.tar all'interno di una cartella myjavalib e poi usando :
javac -cp /myjavalib Prova.java
e poi semplicemente java Prova..
ripeto, prima funzionava, non so se per la versione di java o che.. mi compilava ed eseguiva su geany dove impostavo il classpath adesso mi esegue tutto ma non cioì che è nel classpath /myjavalib
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
su geany una cosa del genere come si potrebbe fare? perchè lo troverei piu' comodo della riga di comando..Lord_Dex ha scritto: ti spiego quando si compila un package si utilizza come metodologia:quindi se te metti tutto all'interno di un altra cartella del tipo prog/miopackage/MiaClasse.javaCodice: Seleziona tutto
javac miopackage/MiaClasse.java
andrebbe ricompilato teoricamente tutto con il nuovo path completo.
Per questo ti consiglio di copiare tutto il package come era originariamente cioè di mettere direttamente le varie cartelle (io, doc. utils, etc) nella stessa cartella della classe Prova.java (ovviamente poi modifica anche l'import all'interno di quest'ultima)
sarà stata una casualità che mi funzionava ma avevo creato questa cartella "myjavalib" nella directory radice "/ " e avevo copiato li la cartella "prog" con tutte le classi del libro. e avevo /myjavalib/prog/
il file che creavo lo mettevo ovunque, ad esempio in documenti.
poi con geany selezionavo imposta include etcetc.. e mettevo compila con il comando javac -cp /myjavalib "%f" se non sbaglio ed esegui con java "%e"..
tutto andava alla grande.. era l'ubuntu 8.04.. ho messo la 7.10 e questo non è piu' possibile, mi pare molto strano.
- Lord_Dex
- Prode Principiante
- Messaggi: 235
- Iscrizione: venerdì 11 maggio 2007, 12:59
- Località: Bologna
- Contatti:
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
ma hai provato a vedere se è quello l'errore?
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
Ti ringrazio di cuore, in questo modo mi funziona..Lord_Dex ha scritto: ma hai provato a vedere se è quello l'errore?
Non vorrei chiedere troppo ma sapresti dirmi su geany come posso usare le classi esterne per compilare ed eseguire? per compilare l'ho capito,(javac -cp /mialibreria file.java) per eseguire no, perchè se il file.java si trova su altri indirizzi non lo esegue..
- Lord_Dex
- Prode Principiante
- Messaggi: 235
- Iscrizione: venerdì 11 maggio 2007, 12:59
- Località: Bologna
- Contatti:
Re: [Java] Semplice programma hello world di java usando libreria di classi esterna
no mi spiace non conosco quell'editor.
cmq hai provato ad utilizzare eclipse?
cmq hai provato ad utilizzare eclipse?
-
franciccio81
- Prode Principiante
- Messaggi: 26
- Iscrizione: mercoledì 12 dicembre 2007, 11:44
- Località: Palermo
Re: [Java] Semplice programma hello world di java usando libreria di classi este
Si è quello che mi hanno consigliato e che usavo ma questo è istantaneo leggero e immediato..Lord_Dex ha scritto: no mi spiace non conosco quell'editor.
cmq hai provato ad utilizzare eclipse?
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti

