No entenc el següent ús de -classpath per javac – java, classpath, javac

No estic molt clar amb la següent pregunta d’el Llibre SCJP (encara que vaig llegir la solució i l’explicació).

Penseu en la següent estructura de directoris: –

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

Aquí foo, test i XCOM són directoris. A.class i B.java són els arxius en el directori XCOM.

Els següents són els codis font dels arxius corresponents: –

A.java

package xcom;public class A { }

B.java

package xcom;public class B extends A { }

L’classpath defecte és / foo.

Ara , per compilar B.java, mantinc el meu directori actual com a prova i dono: –

javac -classpath xcom xcom/B.java

Aquí dono el classpath com XCOM que té A.class. Però tot i així no troba la classe A. Per què és així?

Respostes

2 per a la resposta № 1

Si les seves classes són al paquet XCOM, llavors el seu classpath ha d’estar en el directori directament sobre d’això. En aquest cas, el classpath hauria de ser foo / test.

I si el seu directori actual és foo / prova, llavors aquest hauria de ser el teu javac:

javac -classpath . xcom/B.java

0 per a la resposta № 2

perquè ha d’especificar l’arrel de classpath per -classpath argument, com javac -classpath . xcom/B.java. Per a compilar la classe B, el compilador de Java requereix la classe A, intenta localitzar l’arxiu de classe A en {classpathroot}/xcom/.

Nota: . – és un directori actual

0 per a la resposta № 3

Crec que la causa principal aquí és un malentès d’un” nom complet “en Java.

Tots els noms de les seves dues classes sonxcom.A i xcom.B. La seva font està en els arxius A.java i B.java en un directori anomenat XCOM; els noms complets qualifiquen l’estructura de directori. Quan va a utilitzar els arxius, ja sigui per compilar o executar-los, el classpath conté una o més ubicacions des d’on es poden trobar els noms complets; llavors java està buscant xcomA.java i xcomB.java (quan es compila) i xcomA.class i xcomB.class (quan s’executa).

És per això que classpath necessita especificar el directori que conté XCOM.

A mesura que avança cap a entorns més complexos: el classpath pot ser una llista de tals ubicacions; cada ubicació està separada per un punt i coma en les finestres i dos punts en els sistemes unix. Cada ubicació pot ser un directori, com ja ho ha vist, però també pot ser un arxiu jar. Els arxius jar estan en format d’arxiu zip i els arxius zip tenen una estructura de directori a l’igual que els discos. Per tant, pot comprimir la seva classe arxius, mantenint el seu pare XCOM (però no les seves rutes completes), i especifiqui l’arxiu jar al classpath en lloc d’un directori.

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *