Задать вопрос
@Koshkin_I

Как правильно собрать артифакт?

Здравствуйте!
Во первых получается out/Example_jar_jar/Example.jar.jar
И в целом не понятно где должен быть манифест.
Идея предлагает /src/main/java, на stackoverflow видел что просто в /src.

Как сделать так чтобы этот .jar можно запускать на другом компе? Проект грэдл
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Koshkin_I Автор вопроса
Получаеся так.
Манифест положил в /src. При создании арта в /out образуются /artifacts и /production/resources. В ресах у меня лежит config.properties и еще 2 файла с моими данными. В проперти указаны пути к ним. И походу запускаемый jar всего этого добра не видит.
Запуская из терминала получаю:
ivan@User:~/IdeaProjects/ClicClacer/out/artifacts/ClicClacer_jar$ java -jar ClicClacer.jar
SA 9 Linux
SA 10 {"p":"/home/ivan/.id.txt","id":"654409593"}
/home/ivan/.id.txt
Problem with properties
Exception in thread "main" java.lang.ExceptionInInitializerError
        at org.example.ui.window.UiJFram.<init>(UiJFram.java:34)
        at org.example.Main.main(Main.java:62)
Caused by: java.lang.NullPointerException
        at java.base/java.io.FileInputStream.<init>(FileInputStream.java:149)
        at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
        at org.example.data.ControlPoints.<clinit>(ControlPoints.java:33)
        ... 2 more

Это дело корнями упирается сюда:
try {
            FileInputStream fis;
            Properties properties = new Properties();

            fis =new FileInputStream("src/main/resources/config.properties");
            properties.load(fis);
            filepath = properties.getProperty("filepath");
            filepathCounter = properties.getProperty("pathCounter");
            System.out.println(filepath);
            fis.close();
        }

В IDE всё работает, а jar нет. Как быть? Недает покоя /production с ресами. Как вообще всё это объеденить?
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Для сборки артефакта используйте соответствующие плагины от maven или gradle.
Если в проекте есть зависимости, то погуглите такой термин, как fat jar.
maven build fat jar
gradle build fat jar
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы