mi chiarite nel javadoc cosa fanno? ho dei forti bubbi!!
mi chiarite nel javadoc cosa fanno? ho dei forti bubbi!!
Dany80
Il "classpath" in senso generale è un elenco di directory e file .jar/.zip che la JVM usa per trovare le classi.Originariamente inviato da dany80
mi chiarite nel javadoc cosa fanno? ho dei forti bubbi!!
Il sourcepath è più particolare, vale ovviamente solo per i tools javac/javadoc che devono cercare "sorgenti". E anche qui è in generale una lista di directory e file .jar/.zip in cui trovare sorgenti .java.
Specificare un sourcepath è meno tipico. Se non si specifica, viene usato il classpath anche per cercare i sorgenti. (dalla documentazione: If the -sourcepath option is not specified, the user class path is also searched for source files.)
In ogni caso vale la stessa regola, che te l'ho già detta e ormai dovrebbe uscirti dalle orecchie: i nomi di package si devono "riflettere" nei nomi e nella struttura delle cartelle.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
allora per quello che ho capito da solo...
-la classpath utilizzata dal javac (javac -classpath cartellaMain)serve per far impostare la classpath del progetto compilato nella cartella principale(cartellaMain) del progetto a prescindere dalla variabile CLASSPATH.
-la sourcepath serve in fase di compilazione ( javac -sourcepath mycartella) per cercare i file (.java) da compilare nella directory specificata(mycartella contenente i file .class)
-d directory serve per specificare dove andare a inserire i file file compilati(.class)
Ti spiego io vorrei realizzare un progetto in cui ci siamo tre cartelle
all'interno della cartella "filePuntoClass" ci sono tutti i miei file .classcartellaPrincipaleProgetto
contiene:
- -
- filePuntoClass
-- filePuntoJava
filePuntoJava contiene:
------- fileMain
------- Altrifile
nella cartella "FilePuntoJava" ci sono tutti i file compilati distribuiti secondo i package: main.class all'interno di "fileMain" e i file altri.class utilizzati da main.class contenuti in "AltriFile"
ora in fa di compilazione dovrei lanciare:
premettendo che i package filePuntoJava ed i suoi sottoPackage si creino in fase di compilazione perchè all'interno delle classi abbia dichiarato le classi in questo modo:codice:c:> javac -sourcepath filePuntoClass - classpath .;filePuntoJava\FileMain; filePuntoJava\AltriFile main.java altrifile.java -d filepuntomain
ed in altrifile:codice:package filePuntoJava.filemain; import altriFile.*; public class mymain{...}
ora avendo settato la classpath sul package filePuntoJava.fileMain e filePuntoJava.altriFilecodice:package filePuntoJava.altriFile; public class altriFile{...}
lanciando il comando java mymain il programma dovrebbe funzionare?!?!![]()
correggimi le cavolate che ho scritto...ti prego! ma io quello che ho capito è questo. è giusto o no??![]()
ma in realta mi dà un errore dicendomi che la class main non esiste!!!![]()
Dany80
Ulteriore (e spero definitivo) esempio.
Struttura:
2 directory (da creare prima di tutto):
C:\Prove\bin
C:\Prove\src
Nota: C:\Prove può essere qualunque altra cosa!! Anche src e bin possono cambiare (es. source e build) a patto di aggiornare i comandi sotto.
2 file sorgenti:
C:\Prove\src\org\esempio\Principale.java
C:\Prove\src\org\test\AltraClasse.java
In rosso le cartelle che "riflettono" i package.
Principale.java
AltraClasse.javacodice:package org.esempio; import org.test.AltraClasse; public class Principale { public static void main(String[] args) { AltraClasse ac = new AltraClasse(); ac.test(); } }
Stando come directory "corrente" in C:\Prove (quindi comando: CD C:\Prove)codice:package org.test; public class AltraClasse { public void test() { System.out.println("Funziona!"); } }
javac -d bin -sourcepath src -classpath bin src\org\esempio\Principale.java
La compilazione crea sotto la "bin" una struttura simile (package che si riflettono nelle cartelle) ma che contiene i file .class
java -classpath bin org.esempio.Principale
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Grazie per l'aiuto, ho capito l'errore...era un errore di case sensitive in esecuzione....GRAZIE MILLE...forse vi rompero di nuovo...ma capitemi sono alle prime armi!! e ho voglia di imparare
Dany80