Как правильно в Main прописать путь к test.fxml и к test.db? Java

424
20 января 2017, 06:52

Как правильно прописывать пути к ресурсам в Java? Доброго всем дня. В данный момент изучаю java. Разработку веду в intellij idea. Взялся реализовать простой справочник используя javafx. БД sqlite, для подключения maven подтягивает необходимые библиотеки. Все работает пока запускаешь из idea и перестает работать после сборки в jar. В процессе изучения понял что не тем собирал и с путями у меня полная неразбериха. Потому вопрос - как правильно прописать пути к папке resources? В idea когда создаешь maven project имеем следующую структуру

src
--main
----java
------Main
----resources
------db
--------test.db
------test.fxml
--test
pom.xml

Как правильно в Main прописать путь к test.fxml и к test.db? На данный момент fxml (перенес его в корень к Main) получаю через

    Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));

Но по мне так не верно. Почему при вызове

System.out.println(getClass().getClassLoader().getResource("test.db"));

из Main В терминале выдает

file:/E:/JavaProjects/test/target/classes/test.db
<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 UTF-8 maven maven 1.0

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <archive>
                    <manifestFile>${project.basedir}/src/main/java/META-INF/MANIFEST.MF</manifestFile>
                </archive>
            </configuration>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/java/ru/varizo/maventest/resources</directory>
            <includes>
                <include>**/*.txt</include>
            </includes>
        </resource>
    </resources>
</build>

Answer 1

у вас файл находится в db папке. поэтому нужно указывать расположение файла внутри ресурса

URL resource = Main.class.getClassLoader().getResource("db/file.db");
File f = new File(resource.toURI());
System.out.println(f.exists());

результат true

READ ALSO
Разбить строку по тегам и сохранить части в разные переменные

Разбить строку по тегам и сохранить части в разные переменные

У меня есть строка, части которой обрамлены в тегиНапример:

332
Удержать socket открытым с клиентской части

Удержать socket открытым с клиентской части

Есть вот такой код клиентской части:

375
Иконки для уведомлений Notification.Builder

Иконки для уведомлений Notification.Builder

Подскажите, какого формата и какого размера должны быть иконки для методов setSmallIcon() и setLargeIcon() и где их можно скачать? Или есть ли в Android стандартные...

362
Не могу проверить по значению?

Не могу проверить по значению?

Всем привет ,хотел проверить наличие интернета вот таким способом

310