[Java] Semplice programma hello world di java usando libreria di classi esterna

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
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

Messaggio da franciccio81 »

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..
Avatar utente
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

Messaggio da Lord_Dex »

è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
-- Lord_Dex --
Linux Registered User: 385122
http://wiki.ubuntu-it.org/FrancescoApollonio/
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

Messaggio da franciccio81 »

Lord_Dex ha scritto: è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
sono le classi del libro di testo da cui studio.. provo a ricopiarle dal cd del libro e vediamo..
Avatar utente
Syco
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 662
Iscrizione: lunedì 18 settembre 2006, 19:40
Contatti:

Re: [Java] Semplice programma hello world di java usando libreria di classi esterna

Messaggio da Syco »

è 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
Il miglior GDR online mai creato:
http://www.thechosenbyte.com/YnisWitrin
Immagine
Avatar utente
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

Messaggio da Lord_Dex »

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
-- Lord_Dex --
Linux Registered User: 385122
http://wiki.ubuntu-it.org/FrancescoApollonio/
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

Messaggio da franciccio81 »

franciccio81 ha scritto:
Lord_Dex ha scritto: è sicuro che non ci siano errori interni alla classe ConsoleOutputManager?
sono le classi del libro di testo da cui studio.. provo a ricopiarle dal cd del libro e vediamo..

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?
Avatar utente
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

Messaggio da Lord_Dex »

ti spiego quando si compila un package si utilizza come metodologia:

Codice: Seleziona tutto

javac miopackage/MiaClasse.java
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)
-- Lord_Dex --
Linux Registered User: 385122
http://wiki.ubuntu-it.org/FrancescoApollonio/
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

Messaggio da franciccio81 »

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
In poche parole il libro fornisce un file prog.tar che all'interno contiene tutto cio'

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

Messaggio da franciccio81 »

Lord_Dex ha scritto: ti spiego quando si compila un package si utilizza come metodologia:

Codice: Seleziona tutto

javac miopackage/MiaClasse.java
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)
su geany una cosa del genere come si potrebbe fare? perchè lo troverei piu' comodo della riga di comando..
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.
Avatar utente
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

Messaggio da Lord_Dex »

ma hai provato a vedere se è quello l'errore?
-- Lord_Dex --
Linux Registered User: 385122
http://wiki.ubuntu-it.org/FrancescoApollonio/
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

Messaggio da franciccio81 »

Lord_Dex ha scritto: ma hai provato a vedere se è quello l'errore?
Ti ringrazio di cuore, in questo modo mi funziona..
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..
Avatar utente
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

Messaggio da Lord_Dex »

no mi spiace non conosco quell'editor.
cmq hai provato ad utilizzare eclipse?
-- Lord_Dex --
Linux Registered User: 385122
http://wiki.ubuntu-it.org/FrancescoApollonio/
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

Messaggio da franciccio81 »

Lord_Dex ha scritto: no mi spiace non conosco quell'editor.
cmq hai provato ad utilizzare eclipse?
Si è quello che mi hanno consigliato e che usavo ma questo è istantaneo leggero e immediato..
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti