Как запустить приложение Java с консолью подавленной на Mac

1

Я написал приложение в JAVA, и я установил его для запуска через launchctl (в основном cron).

Проблема, с которой я сталкиваюсь, - это каждый раз, когда срабатывает работа, я коротко вижу "Java" в панели меню, и управление клавиатурой отнимается у меня (опять коротко, но достаточно, чтобы раздражать).

Как я могу остановить приложение от этого? Есть ли что-нибудь в launchctl, что я могу сделать? Я знаю, что есть другие приложения launchctl, которые не проявляют этого поведения.

  • 0
    Правильно ли я понимаю: проблема не в части JAVA, а в программе launchctl, которая отображает консоль вместо того, чтобы молча запускать программу java? Если это так, вы можете перефразировать ваш вопрос: «Как запустить программу Java на Mac без отображения консоли?» Имейте в виду, что здесь, на SO, мы стараемся сосредоточиться на актуальной проблеме. Хорошо, что вы опубликовали свое текущее решение, и почему оно не так хорошо, как вы этого хотите. Но, пожалуйста, также сформулируйте намеченную цель как можно более четко.
  • 0
    Кроме того, добро пожаловать в переполнение стека! Ваш вопрос в настоящее время имеет 4 голоса "в ожидании". В 5 часов он получит уведомление «в ожидании». Как только вы отредактируете вопрос, чтобы он содержал намеченную цель, он перейдет к процессу «продолжения обзора».
Теги:
macos
console

1 ответ

0

Проблема не в 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);
  }

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню