Non capisco il seguente uso di -Classpath da Javac – Java, classpath, Javac

Non sono molto chiaro con la domanda successiva dal libro SCJP (anche se ho letto la soluzione e la spiegazione ).

Considerare la seguente struttura di directory: –

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

Qui Foo, Test e Xcom sono directory. A.Class e B.Java sono i file nella directory XCOM.

Di seguito sono riportati i codici di origine dei file corrispondenti: –

A.java

package xcom;public class A { }

b.java

package xcom;public class B extends A { }

Il classpath predefinito è / foo.

ora , Per compilare B.Java, tengo la mia directory corrente come test e dare: –

Qui do il classpath come xcom che ha a caso. Ma ancora non trovi la classe A. Perché è così?

Risposte

2 per la risposta № 1

Se le classi sono nel pacchetto Xcom, il tuo classpath deve essere in la directory direttamente sopra. In questo caso, il classpath dovrebbe essere foo / test.

e se la directory corrente è foo / test, allora dovrebbe essere il tuo javac:

javac -classpath . xcom/B.java

0 per la risposta № 2

Poiché è necessario specificare la root del classpath per argomento, come javac -classpath . xcom/B.java. Per compilare la classe B, il compilatore Java richiede classe A, prova a individuare il file di classe A in {classpathroot}/xcom/.

Nota: . – è una directory corrente

0 per la risposta № 3

Penso che la causa principale qui sia un malinteso di un “nome completo” in Java.

I nomi completi delle loro due classi sonxcom.a e xcom.b. La sua fonte è nei file A.java e B.Java in una directory chiamata Xcom; I nomi completi valutano la struttura della directory. Quando userete i file, per compilare o eseguirli, il classpath contiene una o più posizioni da dove puoi trovare nomi completi; Allora Java è alla ricerca di xcoma.java e xcomb.java (quando compilato) e xcoma.class e xcomb.class (quando eseguito).

Ecco perché ClassPath deve specificare la directory che contiene Xcom.

Mentre progredisci verso ambienti più complessi: il classpath può essere un elenco di tali posizioni; Ogni posizione è separata da un punto e virgola nelle finestre e due punti nei sistemi UNIX. Ogni posizione può essere una directory, come l’hai vista, ma può anche essere un file JAR. I file JAR sono in formato file ZIP e file ZIP hanno una struttura di directory e dischi. Pertanto, puoi comprimere i file di classe, mantenendo il padre Xcom (ma non i tuoi percorsi completi) e specificare il file JAR nel classPath invece di una directory.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *