Platzieren Sie eine Binärdatei im Ressourcenverzeichnis für ein unkonventionelles Java-Projekt.
FileInputStream stream = new FileInputStream(getClass().getResource("/hoge.bin").getPath());
Ich habe ein Programm geschrieben, um es in einer solchen Form aufzurufen und zu verwenden. In der IDE funktioniert es einwandfrei. Wenn ich es also mit mvn in ein Glas stecke und es von außen aufrufe, erhalte ich eine Ausnahme "Nicht gefunden".
Wenn ich das Glas entpacke, befindet sich definitiv "hoge.bin" direkt darunter. Andere Eigenschaftendateien im selben Verzeichnis können gelesen werden. .. ..
Verwenden Sie "Class # getResourceAsStream" anstelle von "Class # getResource".
InputStream stream = getClass().getResourceAsStream("/hoge.bin");
```
Nachfolgende Programme müssen möglicherweise geändert werden, je nachdem, wie der InputStream verwendet wird.
Why?
Antwort hier: https://stackoverflow.com/a/941785
Dateien, die in jar konsolidiert wurden, können nicht als einzelne Dateien behandelt werden und müssen in Form von Stream referenziert werden.
Ich würde gerne ein etwas ernsthafteres Dokument lesen, aber ich bin es leid, dieses Mal so süchtig danach zu sein.
## Warum bist du so verrückt geworden?
Es hat eine Multiprojektstruktur, die von maven verwaltet wird, und der Eintrag ist für Projekt A, aber die Ressourcen sind für Projekt B, daher hat es einige Zeit gedauert, das Problem zu identifizieren, da ich dachte, es sei ein Fehler in meinen Einstellungen.
Recommended Posts