12
votes

Compiler plusieurs packages à l'aide de la ligne de commande en Java

Bonjour, j'utilise une IDE mais je dois maintenant exécuter et compiler de la ligne de commande.

Le problème est que j'ai plusieurs paquets et j'ai essayé de trouver la réponse, mais rien n'a fonctionné.

donc j'ai xxx

Savez-vous de tout compiler avec Javac?


0 commentaires

7 Réponses :


10
votes

Vous devez utiliser des outils de construction tels que Maven ou Ant pour de telles tâches.

Dans les étapes initiales, lorsque le projet n'est pas très complexe, vous pouvez utiliser la ligne suivante pour compiler, avec une classe de classe appropriée en place (comme suggéré par @Michael):

Javac Support / *. Java Me / *. Java emballages / *. Java


2 commentaires

Oui, le problème est que j'ai besoin de le faire dans un serveur externe et je ne suis pas en mesure d'installer également d'autres.


Vous pouvez décompresser Ant / Maven dans le même système de fichiers que vous stockez votre code, vous n'avez pas besoin de les "installer", de sorte que cela ne vous empêchera pas d'utiliser non plus



11
votes

Cela devrait le faire (peut nécessiter des éléments supplémentaires de classe de classe via le commutateur de ligne -cp de commande): xxx

mais si votre processus de construction devient plus complexe (et Ça va!), vous devez rechercher avec Apache ant pour la construction automatisation.


4 commentaires

+1 - Pour un projet existant avec des dépendances externes minimes, la fourmi est plus simple que (par exemple) Maven. Son IDE peut même être capable de générer un fichier initial "build.xml".


Merci, j'ai essayé cela, il compile tout, mais cela ne génère pas la structure de la classe, alors quand j'essaie de courir mon principal, il dit "" Main "Java.lang.noclassDeffonders: Wrapper / Java"


@Altobre: ​​The Java L'outil s'attend à noms de classe , pas de noms de fichiers, et surtout les noms de fichiers source. Vous devez probablement faire quelque chose comme java wrappers.wrapper , en supposant que vous avez une classe "wrapper" à l'intérieur d'un package "emballages"


Vous êtes un génie ... ça a fonctionné bien. Merci à tous de vous les gars.



6
votes
javac -d compiled $(find src -name *.java)

3 commentaires

Merci j'ai essayé mais je reçois des "noms de variable illégaux" Savez-vous pourquoi? Merci


Peut-être avez-vous besoin -sourcepath src aussi. (Ou vous devez spécifier le répertoire src dans le cadre de la classe de classe)


J'ai essayé votre extrait avec mon projet NetBeans et ça marche:



2
votes

Si vous avez vraiment besoin d'utiliser Javac et des commandes Standard UNIX, vous pouvez en savoir plus:

find src -name \*.java -print0 | xargs -0 javac -d classes


0 commentaires

0
votes

Dans de nombreux cas, la fourmi est surchargée. Utilisez simplement un fichier BAT si vous êtes sous Windows ou un script shell (fichier sh shell) si vous êtes sous Linux. Vous pouvez créer un fichier texte qui inclut toutes vos commandes Javac et il suffit d'exécuter ce fichier lorsque vous souhaitez créer.

Par exemple, j'utilise le fichier BAT suivant pour construire une de mes applications: P>

@echo off
echo Building Shazaam...

del classes\com\aepryus\shazaam\*.* /q
del classes\com\aepryus\shazaam\engine\*.* /q
del classes\com\aepryus\shazaam\domain\*.* /q
del classes\com\aepryus\shazaam\persist\*.* /q
del classes\com\aepryus\shazaam\view\*.* /q
del classes\com\aepryus\shazaam\task\*.* /q
del classes\com\aepryus\shazaam\action\*.* /q
del classes\com\aepryus\shazaam\controller\*.* /q

javac src\com\aepryus\shazaam\*.java        -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar; -d classes
javac src\com\aepryus\shazaam\engine\*.java -classpath \lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\domain\*.java -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\persist\*.java    -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\view\*.java   -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\task\*.java   -classpath \lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\action\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes
javac src\com\aepryus\shazaam\controller\*.java -classpath \lib\Servlet.jar;\lib\AepUtil.jar;\lib\AepXML.jar;\lib\AepRPC.jar;\lib\AepLoom.jar;\lib\AepHTML.jar;\lib\Sprout.jar;classes; -d classes

cd classes
jar cf ..\war\WEB-INF\lib\Shazaam.jar .
cd..

echo Complete


2 commentaires

Et si vous refacteur un package ou ajoutez un nouveau paquet, vous devez toucher ce fichier à chaque fois? Avoir une montre de SkeckingMatter.com/ Podcast / Java-Jee / ... Si vous avez besoin de convaincre ...


Aucune idée des autres. Mais au cours d'un projet, le nombre de fois où j'ai besoin de modifier un tel fichier de commandes est Minuscule, le cas échéant. Il n'y a sans aucun doute que les situations que Maven et Anft sont justifiées; Mais je ne les ai pas rencontrés. Parfois tuer une mouche, une fermeture n'est pas nécessaire (ni un nuke)



2
votes

La réponse réelle est Javac -D (lieux où les classes à construire et placées) -SourcePath (source de l'emballage à la racine) -cp (ClassPath des dépendances qui peuvent encore être des classes dossier où les classes sont construites et conservé) Nom complet du fichier Java.

EX Javac -D CLASSES -SOURCEPATH SRC -CP CLISES SRC \ COM \ TEST \ FirstSample.java

Le premierSample.java contient la méthode principale. Structure de pacjage mentionnée ci-dessous.

avant de compiler
HOMEAPP
--SRC
------ COM \ Test \ FirstSample.java (premier échantillon à l'aide du FIRETPOJO.JAVA)
------ COM \ Test \ FIRETPOJO.JAVA
--Classes

après compilation
Homê part
--SRC
------- COM \ Test \ FirsamSample.java (premiers exemple.java à l'aide du premierPojo.java)
------ COM \ Test \ FIRETPOJO.JAVA
--Classes
------ COM \ Test \ FirstSample.Class (FirstSample.class à l'aide du FIRETPOJO.CLASS)
------ COM \ Test \ FIRETPOJO.CLASS


0 commentaires

0
votes
  1. pour compiler exécilitation exécutée ci-dessous [Il stocke tous les fichiers de classe dans le dossier Classes]

    Les classes Javac -D Support / *. Java Me / *. Java Wringers / *. Java

    ** REMARQUE: Les classes doivent être créées d'abord

    1. Pour exécuter l'application Java, exécutez la commande ci-dessous

      classes Java -CP {Mainfile_Name}

      Remplacez Mainfile_Name avec votre fichier principal.


0 commentaires