Я пытаюсь прочитать файл свойств в проекте природы maven, используя Properties.load();
Я задаю путь как строку ex. "./someFolder/file.properties"
, , но когда я пытаюсь использовать свой проект как зависимость в других проектах, я вынужден копировать эти файлы в другой проект, просто потому, что "."
означает текущий каталог. Есть ли способ указать путь, чтобы он всегда был действительным, несмотря на то, где я его вызываю? , Я попытался использовать MyClass.class.getClassLoader().getResourceAsStream()
, но у меня возникли проблемы с его использованием, он работал иногда и не срабатывал в другое время.Каков наилучший способ указать путь для чтения из класса, даже если проект был jar
ответ
В вашем вопросе есть много неправильных представлений.
"." означает Classpath
No. При использовании внутри файловой системы пути (т.е. путь, передаваемый конструктору файла или FileReader или FileInputStream), «» означает текущий каталог.
При использовании в ресурсе ресурс путь (т. Е. Принят к Class[Loader].getResource[AsStream]()
), он недействителен.
Трюк состоит в том, чтобы внимательно ознакомиться с документацией.
getResourceAsStream()
ожидает /
-расширенная дорожка.
При использовании ClassLoader.getResource[AsStream]()
этот путь всегда начинается с корня пути к классам. Таким образом, вы пройдете путь, похожий на полное имя класса, за исключением того, что точки будут заменены косой чертой. Итак, com/foo/bar.properties
ищет ресурс с именем bar.properties
, в пакете com.foo
.
При использовании SomeClass.class.getResource[AsStream]()
, путь начинается с /
, и путь начинается с корня пути к классам или нет, и он начинается с пакета SomeClass. Итак, если SomeClass находится в пакете com.foo
, использование /com/foo/bar.properties
эквивалентно использованию bar.properties
.
Трудно сказать, что вы делаете неправильно, поскольку вы не предоставляете никаких подробностей. Но вам действительно нужно понять разницу между открытием файла в файловой системе и чтением ресурса, загруженного загрузчиком классов. Иногда ресурсы просто загружаются загрузчиком классов из файловой системы, потому что путь к классам содержит каталоги, а не только файлы jar.
Я заметил, что моя проблема заключалась в том, что у меня были файлы свойств в самом пути к проекту, и что ClassLoader.getResource[AsStream]();
выглядит как папка target/classes
и что у меня не было папки ресурсов в моем проекте.
Я решил его добавить папку ресурсов в мой путь сборки и добавить мои файлы в src/main/resources
следующим образом: src/main/resources/foo/bar.properties
и загрузить его SomeClass.class.getClassLoader().loadResourceAsStream("foo/bar.properties");
.
- 1. Каков наилучший способ настройки рубиновых драгоценных камней для чтения кода?
- 2. Каков наилучший способ «указать/пронумеруть» производительность приложения?
- 3. Каков наилучший способ чтения параметров в функциях?
- 4. Каков наилучший способ для чтения данных из файла text/data
- 5. Каков наилучший способ избежать maven-jar?
- 6. Каков наилучший способ доставки уведомлений ежедневно, даже если приложение убито
- 7. Каков наилучший способ, если если бы еще?
- 8. Каков наилучший способ указать цвет в CSS?
- 9. Каков наилучший способ чтения файла на Java?
- 10. Каков наилучший способ чтения XML-файла из встроенных ресурсов?
- 11. Каков наилучший способ организовать этот проект?
- 12. Каков наилучший способ разрешить путь к файлу?
- 13. Каков наилучший способ открыть существующий проект?
- 14. Каков наилучший подход только для чтения собственности
- 15. Каков наилучший способ распространения класса C++
- 16. Каков наилучший способ импорта/чтения данных из pdf-файлов?
- 17. Каков наилучший способ чтения ro из файла конфигурации в PHP
- 18. Каков наилучший способ указать, что для замены необходим диалог подтверждения?
- 19. Каков наилучший способ сравнения переменных одного класса?
- 20. Каков наилучший способ тестирования статического инициализатора класса?
- 21. Каков наилучший способ вызова методов из всех подклассов абстрактного класса?
- 22. Каков наилучший способ начать новый проект из существующего репозитория Bitbucket?
- 23. Каков наилучший способ чтения данных из Cassandra параллельно?
- 24. Каков наилучший способ чтения вложенного объекта из объединяющего запроса
- 25. Каков наилучший способ воспроизвести «сеанс»
- 26. Каков наилучший способ печати элементов класса Collection?
- 27. Каков наилучший способ управления изменениями?
- 28. Каков наилучший способ расширить функциональность класса?
- 29. Каков наилучший способ обфускации кода Java?
- 30. Каков наилучший способ хранения/чтения большой матрицы в JavaScript?
Спасибо за исправление, да Это означает, что текущий путь не путь класса – SaleemKhair