Eu não entendo o seguinte uso de -Classpath de JavaC – Java, Classpath, JavaC

Eu não estou muito claro com a próxima pergunta do livro SCJP (embora eu li a solução e explicação ).

Considere a seguinte estrutura de diretório: –

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

Aqui foo, teste e xcom são diretórios. A.Class e B.Java são os arquivos no diretório xcom.

Os seguintes são os códigos de origem dos arquivos correspondentes: –

a.java

package xcom;public class A { }

b.java

package xcom;public class B extends A { }

O classpath padrão é / foo.

agora , para compilar b.java, eu mantenho meu diretório atual como teste e dar: –

javac -classpath xcom xcom/B.java

Aqui eu dou o classpath como xcom que tem a.class. Mas ainda não encontre a classe A. Por que é assim?

respostas

2 para a resposta № 1

Se as suas aulas estiverem no pacote XCOM, então seu caminho de classe deve estar em o diretório diretamente em cima disso. Neste caso, o classpath deve ser foo / teste.

e se o seu diretório atual é foo / teste, este deve ser seu JAVAC:

javac -classpath . xcom/B.java

0 para a resposta № 2

porque você deve especificar a raiz do ClassPath para argumento, como javac -classpath . xcom/B.java. Para compilar a Classe B, o compilador Java requer a Classe A, tente localizar o arquivo de classe em {classpathroot}/xcom/.

nota: . – é um diretório atual

0 para a resposta № 3

Eu acho que a principal causa aqui é um mal-entendido de um “nome completo” em Java.

Os nomes completos de suas duas classes SonXCOM.A e XCOM.B. Sua fonte está em arquivos a.java e b.java em um diretório chamado XCOM; Nomes completos Avalie a estrutura do diretório. Quando você vai usar os arquivos, seja para compilar ou execute-os, o ClassPath contém um ou mais locais de onde você pode encontrar nomes completos; Então Java está procurando por xcoma.java e xcomb.java (quando compilado) e xcoma.class e xcomb.class (quando executado).

É por isso que a Classpath precisa especificar o diretório que contém XCOM.

à medida que você progride para ambientes mais complexos: o ClassPath pode ser uma lista de tais locais; Cada local é separado por um ponto e vírgula nas janelas e dois pontos em sistemas UNIX. Cada local pode ser um diretório, como você viu, mas também pode ser um arquivo jar. Os arquivos JAR estão no formato do arquivo ZIP e os arquivos ZIP têm uma estrutura de diretório, bem como discos. Portanto, você pode compactar seus arquivos de classe, mantendo seu pai XCom (mas não suas rotas completas) e especificar o arquivo JAR no ClassPath em vez de um diretório.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *