Je ne comprends pas l’utilisation suivante de -ClassPath par Javac – Java, Javac, Javac

Je ne suis pas très clair avec la question suivante du livre SCJP (bien que je lisais la solution et l’explication ).

Considérez la structure de répertoire suivante: –

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

ici foo, test et xcom sont des annuaires. A.CLASS et B.JAVA sont les fichiers du répertoire XCOM.

Les codes suivants des fichiers correspondants: –

a.java

package xcom;public class A { }

b.java

package xcom;public class B extends A { }

La classe de classe par défaut est / foo.

maintenant , Pour compiler B.java, je garde mon annuaire actuel en tant que test et donne: –

javac -classpath xcom xcom/B.java

Ici, je donne la classe de classe comme xcom qui a une a.class. Mais toujours ne trouvez pas la classe A. Pourquoi est-ce comme ça?

Réponses

2 pour la réponse № 1

Si vos classes sont dans le paquet XCOM, votre classe doit être dans le répertoire directement sur cela. Dans ce cas, la classe de classe devrait être foo / test.

et si votre répertoire actuel est foo / test, cela devrait être votre Javac:

<

javac -classpath . xcom/B.java

0 pour la réponse № 2

Parce que vous devez spécifier la racine de classePath pour -classpath argument, comme javac -classpath . xcom/B.java. Pour compiler la classe B, le compilateur Java nécessite la classe A, essayez de localiser le fichier de classe A dans {classpathroot}/xcom/.

Remarque:

– est un répertoire actuel

0 pour la réponse № 3

Je pense que la cause principale ici est un malentendu d’un « nom complet » en Java.

Les noms complets de leurs deux classes Sonxcom.a et XCOM.B. Sa source est dans les fichiers A.java et B.java dans un répertoire appelé XCOM; Noms complets Taux de la structure de répertoire. Lorsque vous allez utiliser les fichiers, pour le compiler ou les exécuter, le path de classe contient un ou plusieurs emplacements d’où vous pouvez trouver des noms complets; Puis Java cherche Xcome.java et xcomb.java (lors de la compilation) et xcome.class et xcomb.class (lorsqu’il est exécuté).

C’est pourquoi CLASSPATH doit spécifier le répertoire contenant XCOM.

Lorsque vous progressez vers des environnements plus complexes: la classe de classe peut être une liste de tels endroits; Chaque emplacement est séparé par un point-virgule dans les fenêtres et deux points dans les systèmes UNIX. Chaque emplacement peut être un répertoire, comme vous l’avez vu, mais il peut également s’agir d’un fichier JAR. Les fichiers JAR sont dans le format de fichier ZIP et les fichiers ZIP ont une structure de répertoires ainsi que des disques. Par conséquent, vous pouvez compresser vos fichiers de classe, garder votre père XCOM (mais pas vos itinéraires complètes) et spécifier le fichier JAR dans le parcours de classe au lieu d’un répertoire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *