Ich habe ein wirklich einfaches Projekt erstellt, um das Lesen eines Verzeichnisses oder einer Datei unter Verwendung von getClass().getResource('...').getPath()
von STS, Tomcat und das Ausführen der JAR/WAR-Datei vom Terminal mit dem eingebetteten Tomcat zu testen.Spring Resource in JAR/WAR
Wie ich schon sagte, ist das Projekt einfach, hier ist der Code:
package org.example
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.CommandLineRunner
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
class ResourceDemoApplication implements CommandLineRunner {
static void main(String[] args) {
SpringApplication.run ResourceDemoApplication, args
}
@Override
void run(String... arg0) throws Exception {
retrieveDirectory()
}
void retrieveDirectory() {
/*new File(getClass().getResource('/private/folders').getPath()).eachDirRecurse() { dir ->
dir.eachFileMatch(~/.*.txt/) { file ->
println(file.getPath())
}
}*/
println new File(getClass().getResource('/private/folders/').getPath()).isDirectory()
}
}
Wenn dieser Code in STS läuft oder wenn ich es in einem laufenden Tomcat-Instanz fallen, druckt er true
. Wenn ich es als java -jar...
starte, gibt es false
im Terminal zurück. Ich habe mir zahllose Beispiele angeschaut und ich verstehe immer noch nicht, wie man das richtig oder wie erwartet funktioniert. Ich weiß, dass das Lesen von Dateien aus dem JAR anders ist als der Zugriff auf das Dateisystem, aber ich bin mir nicht sicher, wie ich das zum Laufen bringen kann, egal wie es eingesetzt wird.
Vielen Dank im Voraus für die Hilfe!
Wie Sie bereits ein Glas ist keine Datei erwähnt und man kann sie als solche nicht lesen. Es funktioniert in einem Container, weil der Krieg entpackt wird und dann wieder eine Dateiressource ist. –
So ist es nicht möglich, eine Datei/ein Verzeichnis aus einem Jar zu lesen? –
Sicher kannst du aber als Datei keinen 'InputStream' verwenden, der unabhängig davon funktioniert, wie/wo die Datei gespeichert ist. –