Comment puis-je compiler les classes de paquets, de les exécuter plus tard avec “java” (sans le nom du paquet)?
J'ai une petite question concernant javac et packages en Java.
J'ai un programme simple (que nous appellerons Program.java) qui est actuellement dans le répertoire suivant:
- myRepository/myProgram
Dans Program.java et autres .fichiers java dans le myRepository/myProgram répertoire, je l'ai déclaré à package myProgram.*
et également inclus import myProgram.*;
.
Donc quand je tape javac myProgram/Program.java
, il compile bien et il fonctionne très bien si je tape java myProgram/Program
.
Cependant, je vais essayer d'obtenir les .les fichiers de classe pour être produite dans le myRepository
annuaire, pas myRepository/myProgram
, qui est l'endroit où les fichiers source sont. J'ai essayé javac myProgram/Program.java -d ..
qui produit le .les fichiers de classe dans myRepository répertoire, mais quand j'essaie de "Programme java", il me donne l'erreur suivante:
Exception in thread "main" java.lang.NoClassDefFoundError: Programme (mauvais nom: myProgram/Programme).
Est-il de toute façon que je pouvais obtenir .les fichiers de classe à apparaître dans le répertoire principal (myRepository), au lieu d'où les codes sources sont (myRepository/myProgram) et être en mesure d'exécuter java Program
tandis qu'à l'intérieur myRepository?
OriginalL'auteur FlamesPuck12 | 2011-02-06
Vous devez vous connecter pour publier un commentaire.
Il vaut mieux mettre des codes sources sur le répertoire source/myProgram et de créer un répertoire appelé à construire pour mettre l' .les fichiers de classe. Ainsi, vous pouvez compiler et exécuter de cette façon:
OriginalL'auteur Dielson Sales
Emballés classes ne peuvent pas être stockées dans n'importe quel répertoire.
Ce lien pourrait vous être utile:
http://www.herongyang.com/Java-Tools/javac-Option-d-Specifying-Output-Directory.html
OriginalL'auteur vinga
Vous devriez appeler le compilateur à partir de la
myRepository
répertoire, pas de l'intérieur du répertoire du package, comme ceci:javac myProgram/Program.java
, puisjava myProgram.Program
.La création de classes dans un package-structure pour le chargeur de classe pour les trouver (au moins avec la valeur par défaut du chargeur de classe).
Vous pouvez les mettre dans un autre répertoire, mais ensuite, ils auront le droit de structures, et vous devriez donner ce répertoire à votre VM:
Il n'existe aucun moyen (avec la valeur par défaut
java
de commande) à l'exécution d'une classe dans un package sans mentionner le nom du package.Vous pouvez utiliser un emballage de classe qui est dans le paquet anonyme (par exemple, sans
package
déclaration), qui appelle tout simplement de la classe d'origine:Alternativement, si vous êtes en développement, avec un IDE, vous pouvez tout simplement commencer votre programme avec un clic de bouton.
Pour la distribution, vous serait plutôt de mettre tous vos fichiers de classe dans un fichier jar et de définir la classe principale dans le manifeste. Ensuite, vous pouvez appeler le programme de cette façon:
En dehors de l'écriture d'un nouveau
java
mise en œuvre, non. Vous pouvez penser à l'aide d'un IDE, où vous pouvez simplement appuyer sur un bouton (ou appuyer sur une touche de raccourci) pour compiler et exécuter votre code.OriginalL'auteur Paŭlo Ebermann