Я написал приложение в JAVA, и я установил его для запуска через launchctl (в основном cron).
Проблема, с которой я сталкиваюсь, - это каждый раз, когда срабатывает работа, я коротко вижу "Java" в панели меню, и управление клавиатурой отнимается у меня (опять коротко, но достаточно, чтобы раздражать).
Как я могу остановить приложение от этого? Есть ли что-нибудь в launchctl, что я могу сделать? Я знаю, что есть другие приложения launchctl, которые не проявляют этого поведения.
Проблема не в Mac или LaunchCtl. Проблема была связана с некоторыми JavaFX, которые я устанавливал в приложение. Класс, содержащий "main", был расширен с помощью javafx.application.Application. В ситуациях, когда я не запускал пользовательский интерфейс (он также может работать без головок) из-за того, что JavaFX "приложение" все равно захватывало.
Решением было создать еще один класс, который расширяет "Приложение". Я только создаю экземпляр и запускаю этот класс, когда мне нужен интерфейс для запуска.
Здесь основное приложение
ПЕРЕД открытым классом MyApp расширяет Application {
@Override
public void start(Stage primaryStage)
throws IOException {
...
}
public static void main(String[] args)
throws Exception {
UIMain uiMain;
uiMain = new UIMain();
if (args.length == 0) {
uiMain.run(args);
} else {
// Even though there is no UI being launched it still popped "Java" in the toolbar here
...
}
}
}
ПОСЛЕ (может быть, лучший способ сделать это)
public class MyApp {
public static void main(String[] args)
throws Exception {
UIMain uiMain;
uiMain = new UIMain();
if (args.length == 0) {
uiMain.run(args);
} else {
// When this section runs I don't get the annoying Java pop in the Toolbar
...
}
}
public class UIMain
extends Application {
@Override
public void start(Stage primaryStage)
throws IOException {
...
}
public void run(String[] args) {
launch(args);
}
}