2008-10-07 52 views
0

J'ai un UberJar avec toutes mes classes java, mais je veux exécuter ce fichier avec un fichier persistant.xml externe. Selon la spécification, Hibernate (ou tout autre fournisseur JPA) recherche le fichier persistence.xml dans n'importe quel dossier META-INF qui se trouve sur le classpath, mais je n'ai pas réussi à le faire avec un UberJar. Des idées? Le chargeur de classe d'UberJar est-il limité au contenu du fichier jar?Puis-je spécifier un fichier persistence.xml compatible JPA sur la ligne de commande java?

Répondre

1

De l'jar option de ligne de commande:

« jar » Lorsque vous utilisez cette option, le fichier JAR est la source de toutes les classes d'utilisateurs et d'autres paramètres de chemin de classe d'utilisateur sont ignoré

Ainsi, il semble que la réponse directe est non.

Vous pouvez écrire votre propre classe d'amorçage qui utilise le classpath java habituel (y compris votre persistence.xml), puis l'amorçage du UberJar, bien que vous utilisez probablement UberJar pour éviter ce ...

0

Pour donner suite à comment j'ai résolu cela, j'ai ajouté le fichier persistence.xml et mon jar au classpath et ensuite spécifié la classe principale. J'avais aussi toujours les classes non archivées sur mon chemin, ce qui les obligeait à remplacer les paramètres du pot.