Я немного сбит с толку, как путь поиска файлов по умолчанию задается как в IntelliJ, так и в Java в целом.Я включаю IntelliJ в качестве тега, потому что эта IDE наверняка изменяет / добавляет некоторые дополнительные пути для поиска.
Рассмотрим следующий, фиктивный код:
File ff = new File("test.txt");
if(ff.exists() && !ff.isDirectory()) {
System.out.println("Exist");
LabelReader lr = new LabelReader(ff);
} else {
System.out.println("Missing");
}
В IntelliJ это будет работатьтолько, если test.txt
будет помещено в самый верхний каталог проекта (т.е. вместе с src
, pom.xml
ect)
Первый вопрос :
, какая настройка отвечаетдля добавления / изменения этого фиктивного начального пути?
Теперь ClassLoader
и getResource
:
ClassLoader cl = DayTwoMain.class.getClassLoader();
URL pathURL = cl.getResource("test.txt");
File ff = new File(pathURL.getPath());
if(ff.exists() && !ff.isDirectory()) {
System.out.println("Exist");
LabelReader lr = new LabelReader(ff);
} else {
System.out.println("Missing");
}
Будет выдано NullPointerException
, поскольку URL
установлено на null
, но после фиктивного вызова:
ClassLoader cl = DayTwoMain.class.getClassLoader();
URL pathURL = cl.getResource("");
Предоставляет URL-адрес, который указывает на [ProjectRoot]/target/classes
Второй вопрос :
Почему для ClassLoader
указан путькаталог после сборки?Связано ли это с реальной JVM, начиная с этого каталога после компиляции исходных текстов?Как и где это можно изменить / изменить?
Теперь с ресурсами.Я предполагаю, что файлы проектов IntelliJ / Maven, изображения, конфигурации и другие статические данные должны храниться в папке ресурсов.Таким образом, папка, помеченная как корневая папка ресурсов в IntelliJ, должна быть скопирована как есть в целевое место назначения, но для меня это не так, цель содержит только папку классов, ресурсы не были скопированы.Я должен вручную добавить раздел с ресурсами к pom.xml
, как показано ниже:
<resources>
<resource>
<directory>src/main/resources/*</directory>
</resource>
</resources>
, чтобы заставить IntelliJ скопировать его в цель.
Третий вопрос
IsnРазве это не задача, которую IntelliJ выполняет автоматически?Какие огромные IDE предназначены для автоматизации этих задач с помощью веселья и радости «укажи и щелкни»?Или я что-то не так делаю?