Запретить запуск jar на сетевом диске - PullRequest
2 голосов
/ 16 мая 2019

Исполняемый файл JAR распространяется среди пользователей на каждый сетевой диск. Я хочу запретить пользователям запускать его непосредственно в сети, потому что это вызывает производительность и другие проблемы.

Одним из решений может быть проверка пути выполнения и сравнение его с путем сетевого диска, но что, если путь сетевого диска не известен заранее? Есть ли другая возможность?

1 Ответ

1 голос
/ 16 мая 2019

Я не думаю, что вы можете сделать это на чистой Java.Я почти уверен, что вам нужно будет либо запустить внешнюю команду, либо сделать вызов в нативный код, чтобы определить, находится ли файл JAR в общей сетевой папке.

Первая часть, которую вам нужно сделать, - это получитьабсолютный путь к файлу JAR:

Class mainClass = MyMainClass.class;
File jarFile = new File(mainClass.getProtectionDomain()
                                 .getCodeSource()
                                 .getLocation()
                                 .toURI());

Я нашел «гист» на github, написанный Аароном Дигуллой, который выполняет вторую часть задачи:

Код Аарона принимает абсолютный путь Windows, извлекает букву диска и затем запускает команду Windows net use <drive-letter>:, чтобы проверить, является ли диск общим диском.


Anальтернативой может быть реализация логики, которую пакетный файл выполняет следующим образом:

  • Извлечение имени диска для файла JAR
  • Использование net use ... для проверки общего диска
  • Используйте ту же технику, чтобы убедиться, что установка Java не находится на общем диске 1 .
  • Используйте команду java для запуска приложения

Наконец, вероятно, плохая идеяefuse для запуска на общем диске.У пользователя могут быть причины сделать это, о которых вы не знаете.Я хотел бы предложить побудить пользователя и дать ему возможность продолжить в любом случае.Или что-то в этом роде.

В качестве альтернативы, укажите в инструкциях по установке приложения, что не рекомендуется для установки JRE / JDK и приложения на общем диске (или эквивалентном).


1 - Установка Java на общем диске даст такую ​​же плохую, если не худшую производительность, как JAR приложения на общем диске.

...