Maison  >  Article  >  Java  >  Pourquoi la ressource Classpath est-elle manquante lors de l'exécution en tant que JAR ?

Pourquoi la ressource Classpath est-elle manquante lors de l'exécution en tant que JAR ?

DDD
DDDoriginal
2024-11-03 16:50:03741parcourir

Why Does Classpath Resource Missing When Running As JAR?

Ressource Classpath manquante lors de l'exécution en tant que JAR

Lors du chargement des ressources Classpath à l'aide de l'annotation @Value, il est possible de rencontrer des exceptions de fichier introuvable lors de l'exécution l'application sous forme de fichier JAR. Bien que la ressource soit présente dans le répertoire src/main/resources et confirmée dans le fichier JAR, le problème survient en raison d'une différence dans la façon dont les ressources de chemin de classe sont gérées dans différents contextes.

Comprendre le problème

Le problème réside dans l'utilisation de resource.getFile(). Cette méthode s'attend à ce que la ressource soit accessible sur le système de fichiers et ne peut pas gérer les ressources imbriquées dans les fichiers JAR. Lors de l'exécution de l'application dans STS, cette méthode fonctionne car la ressource est directement accessible sur le système de fichiers. Cependant, lors de l'exécution à partir du fichier JAR, la ressource se trouve dans le fichier JAR et n'est pas directement accessible sur le système de fichiers.

Solution alternative

Pour résoudre ce problème problème, il est recommandé d'utiliser Resource.getInputStream() au lieu de Resource.getFile(). Cette méthode permet d'accéder au contenu de la ressource quel que soit son emplacement. Voici un exemple :

<code class="java">try (BufferedReader reader = new BufferedReader(new InputStreamReader(messageResource.getInputStream()))) {
  // Read and process the resource's content here
}</code>

Cette approche garantira que la ressource est accessible correctement lors de l'exécution de l'application en tant que fichier JAR, éliminant ainsi l'exception de fichier introuvable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn