2010-06-23 4 views
0

Quand j'ai fini d'écrire mes cours, je les ai mis dans une structure de paquets et ensuite je les ai tous secoués.meilleure façon de déployer un paquet

Maintenant, quelle est la meilleure façon de déployer et d'utiliser mon pot?

  1. de définir le chemin de classe;
  2. utilisez la variable CLASSPATH;
  3. en utilisant le mécanisme d'extension.

Répondre

0

Meilleur à mon avis est de fournir des fichiers batch et des scripts shell pour démarrer l'application. Les scripts sophistiqués vérifient les variables d'environnement telles que $ JAVA_HOME (% JAVA_HOME%) et les utilisent, si elles sont définies, ou utilisent une valeur par défaut.

A l'intérieur du script que vous pouvez construire le chemin de classe dans une variable interne et lancer l'application avec une ligne comme

%JAVA_HOME%\bin\java.exe -cp %LIBRARIES% com.example.Main 

Je préférerais cette solution, l'alternative java -jar Application.jar, car celui-ci exige que vous configurez le classpath à l'intérieur des pots manifestent. Donc, le déploiement d'une application qui dépend des bibliothèques existantes sur le système cible est assez difficile, juste parce que vous devez connaître les chemins de la bibliothèque avant vous construisez l'application.

-1

La définition du chemin de classe (en utilisant -cp) est la meilleure solution, car vous pouvez avoir un chemin de classe différent pour chaque application. La variable d'environnement CLASSPATH est globale pour toutes les applications Java s'exécutant sur la machine, tout comme le mécanisme d'extension, donc vous ne voulez probablement pas les utiliser.

Si votre code est exécutable (c'est-à-dire qu'il a une méthode public static void main(String[] args)), vous pouvez également spécifier la classe dans laquelle se trouve la méthode principale et le chemin de classe associé dans le fichier manifeste dans le fichier Jar. Une fois que vous avez fait que vous pouvez faire ceci:

java jar myJar.jar

et Java fonctionnera le reste.

0

Je vous avez une classe principale dans ce pot que vous voulez exécuter la meilleure approche est de mettre un fichier META-INF/MANIFEST.MF dans le pot et lancer votre classe en utilisant java -jar mypackage.jar

Le manifeste doit contenir un Class-Path et un Main-Class attribut

Voir http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Manifest

0

Si vous entendez par « déployer et à utiliser » que vous voulez l'utiliser dans une autre application, le mettre sur le chemin de classe de cette application. Si vous utilisez le mécanisme d'extension (je suppose que vous voulez dire le jar dans pathtojava/lib/ext) chaque application utilisant ce jvm aura le jar chargé, le samecounts pour le CLASSPATH comme variable système. Ce n'est probablement pas nécessaire?

Si vous souhaitez exécuter/utiliser le pot en tant qu'application autonome; il suffit de l'exécuter en ligne de commande, aucun truc de classpath nécessaire. Si vous voulez déployer sur un serveur, vous avez probablement voulu faire une guerre ou un champ d'oreille à la place.

1

Ne mettez pas à jour la variable d'environnement CLASSPATH de l'utilisateur car il existe un risque que votre application déployée interfère avec d'autres applications Java que l'utilisateur pourrait vouloir exécuter. Ne pas déployer à l'aide du mécanisme d'extension car vous risqueriez d'interférer avec les applications exécutées par par un utilisateur utilisant la machine virtuelle Java que vous avez "étendue". La meilleure solution consiste à créer et déployer un script wrapper qui utilise l'argument "-cp", ou un raccourci qui exécute un fichier JAR auto-lancement ... comme suggéré par d'autres réponses.

Questions connexes