Non entendo o seguinte uso de -Classpath de Javac – Java, ClassPath, Javac

Non estou moi claro coa seguinte pregunta do libro SCJP (aínda que lin a solución e explicación ).

Considere a seguinte estrutura do directorio: –

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

Aquí foo, proba e XCOM son directorios. A.Class e B.Java son os ficheiros do directorio XCOM.

Os seguintes son os códigos fonte dos ficheiros correspondentes: –

a.JAVA

package xcom;public class A { }

b.java

package xcom;public class B extends A { }

A clase predeterminada de clase é / foo.

agora , para compilar b.java, mantendo o meu directorio actual como proba e dálle:

javac -classpath xcom xcom/B.java

Aquí dou a clase de clase como XCOM que ten A.Class. Pero aínda non atopas a clase A. Por que é así?

respostas

2 para a resposta № 1

Se as túas clases están no paquete XCOM, entón o teu clasificado debe estar en o directorio directamente sobre iso. Neste caso, o classpath debe ser foo / test.

e se o seu directorio actual é foo / proba, entón debería ser o seu Javac:

javac -classpath . xcom/B.java

0 para a resposta № 2

Porque debe especificar a raíz do argumento classpath para -classpath, como javac -classpath . xcom/B.java. Para compilar a clase B, o compilador Java require a clase A, intente localizar o ficheiro de clase un en .

Nota: . – é un directorio actual

0 para a resposta № 3

Creo que a principal causa aquí é un malentendido dun “nome completo” en Java.

Os nomes completos Das súas dúas clases sonxcom.a e xcom.b. A súa fonte está en arquivos A.Java e B.Java nun directorio chamado XCOM; Nomes completos Valorar a estrutura do directorio. Cando vai usar os ficheiros, para compilar ou executalos, o classpath contén un ou máis lugares desde onde pode atopar nomes completos; Entón Java está a buscar xcoma.java e xcomb.java (cando compilado) e xcomba.class e xcomb.class (cando se executa).

Por iso ClosePath ten que especificar o directorio que contén XCOM.

a medida que avanza cara a ambientes máis complexos: a clasificación pode ser unha lista de tales lugares; Cada localización está separada por un punto e coma nas fiestras e dous puntos en sistemas UNIX. Cada localización pode ser un directorio, xa que o viu, pero tamén pode ser un ficheiro jar. Os ficheiros JAR están en formato de ficheiro ZIP e os ficheiros ZIP teñen unha estrutura de directorio e discos. Polo tanto, pode comprimir os seus ficheiros de clase, manter o seu pai XCOM (pero non as súas rutas completas) e especificar o ficheiro JAR no classpath en lugar dun directorio.

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *