Как запустить exe из банки? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть простой класс java, как показано ниже.

public class Launcher {

    public static void main(String[] args) {
        launchURLInBrowser("http://google.com");
    }

    private static void launchURLInBrowser(String url) {
        try {
            Process p = Runtime.getRuntime().exec(new String[]{"C:\\Users\\Administrator\\Downloads\\chrome-win\\chrome.exe", "--kiosk", url});
            p.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Единственное, что я делаю в этом классе, - это запускаю веб-браузер Chromium в режиме киоска, и он отлично работает.

Теперь мне нужно собрать этот класс в jar-файл и распространить его. Я собираюсь распространять банку вместе с почтовым индексом веб-браузера. Поэтому мне нужно указать относительный путь вместо пути жесткого кода, который я дал сейчас.

Мой дистрибутив jar будет иметь следующую структуру папок. Браузер Chrome не будет помещен внутрь банки. Он будет внешним, но внутри той же папки, как показано ниже.

launcher.jar
chrome-win
    -other files and folders
    -chrome.exe

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Полагаю, вы используете Windows ОС.
Я бы предпочел такую ​​папку

launcher.bat
jre
lib
   -launcher.jar
chrome-win
   -other files and folders
   -chrome.exe

В launcher.bat

  1. получите ваш текущий путь, используя bat, и используйте его в качестве RootPath для вашего Java
  2. настроить Java home (RootPath / jre), classpath (RootPath / lib) и т. Д. c
  3. выполнить Launcher. java, используя путь chrome .exe и url как параметр основного метода.

Надеюсь, что это может помочь.

0 голосов
/ 23 марта 2020

Я думаю, вы можете попробовать использовать

getClass().getClassLoader().getResource("Downloads\\chrome-win\\chrome.exe")

вместо абсолютного пути ... Или попробовать этот тип логики c

...