У меня есть папка lib, содержащая все мои файлы Jar и в одном из классов файлов Jar, у меня есть основной метод, который вызывается пакетным файлом. В том же папке, что и моя библиотека, у меня есть другой путь структуры папок /to/a/resource/myresource.txt
Как загрузить этот файл из класса внутри Jar файла? Я попробовал следующее, и оба привели к null:
getClass().getResource("path/to/a/resource/myresource.txt")
getClass().getClassLoader().getResource("path/to/a/resource/myresource.txt")
Есть идеи? Даже с абсолютным путем, это провалилось! Какие-либо предложения?
Вы можете использовать:
getClass().getResourceAsStream("path/to/a/resource/myresource.txt")
Однако для этого вам нужно добавить путь '.' к записи класса Path файла JAR MANIFEST.MF.
http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
Ваш путь кажется недостаточно точным. Кроме того, этот вопрос уже работал.
Посмотрите здесь:
Вы можете загрузить файл из файловой системы
new FileReader(relativeOrAbsoluteFilesystemLocation)
или вы можете добавить соответствующий каталог в свой путь к классам:
java -cp "lib/*;lib" ...
а затем используйте свой оригинальный метод.
(Unix использует :
вместо ;
как разделитель classpath)
File file = new File("C:/folder/myFile.txt");
или если вы знаете относительный путь:
File file = new File("../../path/myFile.txt");
Две вещи, которые вы пытались использовать для чтения файлов из класса, поскольку эта папка не находится в вашем пути к классам, вы можете прочитать ее непосредственно с любым из классов Java IO File.
FileReader
для этого.