Nu înțeleg următoarea utilizare a lui -ClassPath de Javac – Java, Classath, Javac

Nu sunt foarte clar cu următoarea întrebare din cartea SCJP (deși am citit soluția și explicația ).

Luați în considerare structura următoarelor director: –

foo --> test --> xcom --> A.class, B.java

aici Foo, testul și XCom sunt directoare. A.Class and b.java sunt fișierele din directorul XCOM.

Codurile sursă ale fișierelor corespunzătoare: –

A.java

package xcom;public class A { }

b.java

package xcom;public class B extends A { }

Classatul implicit este / foo.

acum , Pentru a compila B.java, păstrez directorul meu curent ca test și dau: –

javac -classpath xcom xcom/B.java

Aici dau clasa ca xcom care are a.class. Dar încă nu găsesc clasa A. De ce este așa?

răspunsuri

2 pentru răspunsul № 1

Dacă clasele dvs. sunt în pachetul XCOM, atunci clasa dvs. trebuie să fie directorul direct în partea de sus a acestui lucru. În acest caz, Classatul ar trebui să fie foo / test.

și dacă directorul dvs. curent este foo / test, atunci acesta ar trebui să fie Javac:

javac -classpath . xcom/B.java

0 pentru răspunsul № 2

deoarece trebuie să specificați rădăcina clasei de clasă pentru , ca javac -classpath . xcom/B.java. Pentru a compila clasa B, compilatorul Java necesită clasa A, încercați să găsiți clasa un fișier în {classpathroot}/xcom/.

Notă: . – este un director curent

0 pentru răspunsul № 3

Cred că cauza principală aici este o neînțelegere a unui „nume complet” în Java.

Numele complete a celor două clase Sonxcom.a și XCom.B. Sursa sa este în fișierele A.java și B.java într-un director numit XCOM; Nume complete Ratează structura directorului. Când veți folosi fișierele, fie pentru a le compila, fie pentru a le executa, Classatul conține una sau mai multe locații de unde puteți găsi nume complete; Apoi Java caută xcoma.java și xcomb.java (când este compilate) și xcomb.class și xcomb.class (când este executat).

De aceea trebuie să specificați directorul care conține XCOM.

În timp ce progresați către medii mai complexe: Classatul poate fi o listă a acestor locații; Fiecare locație este separată de un punct și virgulă în ferestre și două puncte din sistemele Unix. Fiecare locație poate fi un director, după cum ați văzut-o, dar poate fi, de asemenea, un fișier JAR. Fișierele JAR sunt în format de fișiere ZIP și fișierele ZIP au o structură de director, precum și discuri. Prin urmare, puteți să vă comprimați fișierele de clasă, păstrând tatăl XCOM (dar nu rutele complete) și specificați fișierul JAR din Classatul în loc de un director.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *