2010-06-04 6 views
4

Essentiellement, laissez-moi d'abord expliquer ce que je veux faire. J'ai une application dynamique de transformation ETL écrite en Java. En raison de la nature dynamique de cette application, je dois être en mesure d'ajouter des plugins jars à l'application dans un emplacement en dehors du fichier jar des applications. serait essentiellement comme avoir la structure de répertoire suivant:Problèmes incluant les fichiers jar en dehors du fichier jar contenant le manifeste

AppFolder
| - plugins/
| - configs/
| - mainApp.jar

Si possible, je voudrais être en mesure d'utiliser des jokers dans mon manifeste pour ajouter dynamiquement des jars situés dans le dossier plugins. Malheureusement, tout ce que j'ai essayé jusqu'ici a échoué. J'ai essayé d'utiliser à la fois des chemins relatifs et des chemins absolus qui n'ont pas fonctionné (avec ou sans joker). Si j'inclus cependant le dossier plugins dans le fichier jar de l'application principale, cela fonctionne bien car je n'utilise pas de jokers. Donc, ma question est, est-il réellement possible d'avoir des dépendances en dehors d'un pot ou doivent-elles toujours être contenues à l'intérieur. L'autre question concerne l'utilisation de caractères génériques. J'ai regardé [la documentation java] (http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html) pour ne pas l'emporter malheureusement.

quelques exemples de ce que je l'ai essayé jusqu'à présent:

  • ../plugins/*
  • ../plugins/plugin.jar
  • /abolute/path/to/plugins/*
  • /abolute/path/to/plugins/plugin.jar

et, malheureusement, aucun d'entre eux ont fait le tour de sorte que toute aide serait très apprécié ...

+0

Avez-vous absolument besoin de lancer votre application en double-cliquant dessus? Ou est-ce correct si vous le lancez en exécutant un script batch ou un script shell? – nojo

Répondre

3

Oui, vous pouvez avoir des dépendances en dehors du pot. Mais les caractères génériques ne sont pas pris en charge pour spécifier les fichiers jars dépendants.

Les pots doivent être explicitement spécifié dans votre manifeste, et l'emplacement doit être relatif à l'endroit où l'application est exécutée à partir

Une meilleure option pour vous est peut-être utiliser le Extension Mechanism

java -Djava.ext.dirs=/abolute/path/to/plugins/ ...... 
Questions connexes