[JAVA] Lorsque j'appelle le fichier avec la classe # getResource à partir du fichier jar, il devient Not Found et c'est un mémorandum merdique

Événement problématique

Placez un fichier binaire dans le répertoire des ressources pour un projet Java non conventionnel.

FileInputStream stream = new FileInputStream(getClass().getResource("/hoge.bin").getPath());

J'ai écrit un programme à appeler et à utiliser sous une telle forme. Cela fonctionne bien dans l'IDE, donc quand je le mets dans un bocal avec mvn et que je l'appelle de l'extérieur, j'obtiens une exception non trouvée.

Lorsque je décompresse le pot, il y a définitivement hoge.bin directement en dessous. D'autres fichiers de propriétés dans le même répertoire peuvent être lus. .. ..

Solution

Utilisez Class # getResourceAsStream au lieu de Class # getResource.

InputStream stream = getClass().getResourceAsStream("/hoge.bin");
```

 Les programmes suivants devront peut-être être modifiés, selon la manière dont InputStream est utilisé.

 Why?

 Répondez ici: https://stackoverflow.com/a/941785
 Les fichiers qui ont été consolidés dans jar ne peuvent pas être traités comme des fichiers individuels et doivent être référencés sous la forme de Stream.
 J'aimerais lire un document un peu plus sérieux, mais j'en ai assez d'être tellement accro, donc cette fois.

## Pourquoi es-tu devenu si fou

 Il a une structure multi-projets gérée par maven, et l'entrée est le projet A, mais la ressource est celle du projet B, il a donc fallu du temps pour identifier le problème car je pensais que c'était une erreur dans mes paramètres.


Recommended Posts

Lorsque j'appelle le fichier avec la classe # getResource à partir du fichier jar, il devient Not Found et c'est un mémorandum merdique
21 Lire et exécuter le script à partir du fichier
Mémorandum: Quand j'ai essayé TensorFlow avec Tribuo, cela n'a pas fonctionné, alors je suis parti en voyage pour retrouver le chef de famille et je me suis perdu.
UnsupportedClassVersionError a été généré lorsque j'ai placé le fichier .war construit avec Eclipse sur EC2 et l'ai exécuté.
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
[Java] Créez un fichier jar compressé et non compressé avec la commande jar
Créez un fichier jar avec la commande
Lorsque je soutiens l'internationalisation avec Spring Boot, je suis accro à ne pas traduire une langue spécifique
J'ai créé un programme qui recherche la classe cible à partir du processus surchargé avec Java
Lorsque j'exécute la commande source dans le Makefile d'Ubuntu, j'obtiens "source: command not found"
Que faire quand est invalide car il ne commence pas par un "-"
Le chemin du fichier n'est pas reconnu lors de l'exécution d'une commande externe à partir d'une application Java
Au moment de l'événement dialogReturn, j'ai vérifié car il n'est pas mis à jour même si je spécifie un composant avec mise à jour
Ecrire une classe en Kotlin et l'appeler en Java
J'ai rencontré un problème selon lequel JS n'est pas lu après la transition de page et JS est lu lorsqu'il est chargé.
Comment charger une bibliothèque à partir d'un fichier JAR avec VSCode << Comment ne pas utiliser Maven / Gradle >>
Lorsqu'un fichier Java créé avec l'éditeur Atom est déformé lorsqu'il est exécuté à l'invite de commande
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
Je veux appeler une méthode et compter le nombre
À propos du comportement lors de la création d'un mappage de fichiers avec Java
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique
Convertissez Excel en Blob avec java, enregistrez-le, lisez-le à partir de DB et exportez-le sous forme de fichier!
Si vous obtenez une erreur "Quantum Renderer: aucun pipeline approprié trouvé" lors de l'exécution d'un fichier jar