Приложения / процессы, запущенные с использованием Java 8 в Windows, не отображаются

Это заставляет меня работать сверхурочно, и у меня до сих пор нет много подсказок. У меня есть веб-приложение, которое установлено локально (приложение псевдо-рабочего стола), которое выполняет следующие действия:

  1. Запускает SSH-туннель
    • напрямую запускает ssh, если на Mac OS X
    • использует исполняемый файл PuTTy, если на Windows
  2. Открывает Firefox или Chrome, настроенный на использование прокси-сервера Socks5 с использованием туннеля (localhost:port) через веб-драйверы Selenium.

Для 1: я использовал оба Runtime.getRuntime().exec(command); а также Process proc = new ProcessBuilder(arguments).start();и даже дал Desktop dt = Desktop.getDesktop(); dt.open(f); попытка Но ничего не происходит, командная строка не открывается.

Для 2: я пытался использовать оба Firefox:

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("network.proxy.type", 1);
    profile.setPreference("network.proxy.socks", "localhost");
    profile.setPreference("network.proxy.socks_port", 8088);
    driver = new FirefoxDriver(profile);

И Chrome:

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability("chrome.switches", Arrays.asList("--proxy-server=socks5://localhost:8088"));
    driver = new ChromeDriver(capabilities);

Но, как и в 1, ни Firefox, ни хромированные окна не открываются.

Обратите внимание, что это приложение отлично работает на Mac OS X Mavericks.

После нескольких часов отладки я заметил, что процессы там. Все процессы, от PuTTy, до Chrome, до Firefox. Там было много тех, кто уже работал в фоновом режиме. Странно, что для пользовательского столбца этих процессов задано значение SYSTEM, а для обычных сеансов браузера, например, для пользователя задано значение "IT", которое является моей текущей учетной записью пользователя Windows.

Я пытался вручную изменить пользователя, в котором эти процессы вызываются, но пока не повезло.

Очевидно, мое приложение работает и в Windows, но не так, как я планировал. Все процессы, независимо от того, является ли это сценарием командной строки или настольным приложением, таким как Firefox или Chrome, они просто не отображаются, но выполняются в фоновом режиме под пользователем "SYSTEM". И я понятия не имею, почему. Конечно, это не похоже на поведение по умолчанию. Так что если у кого-то есть идея, я бы очень признателен.

Благодарю.

1 ответ

Решение

Наконец-то я смог это исправить! Благодаря этой статье (из, казалось бы, не связанного случая):

Большинство служб Windows, включая те, которые запускаются с параметром "Разрешить службе взаимодействовать с рабочим столом" в Windows XP и Vista, не имеют доступа ко многим ресурсам компьютера, включая экран консоли. Это может привести к сбою автоматических тестов GUI, если вы используете Apache Tomcat в качестве службы Windows и проводите какие-либо тесты GUI. Это верно по крайней мере для платформ AWT и Abbot.

Это ограничение можно устранить, если не запускать Tomcat как службу Windows, а вместо этого использовать "Запланированную задачу" как приложение, которое запускается при входе в систему. Для этого есть несколько вариантов, например, можно запустить "$TOMCAT_HOME\bin\tomcat5.exe". При настройке запланированной задачи в Windows Vista рассмотрите возможность установки флажка "Запуск с самыми высокими привилегиями" на вкладке "Общие", так как это устраняет необходимость всегда предоставлять права администратора и может также решить другие проблемы.

Я не запускал tomcat7 как службу Windows, а просто выполнял ее напрямую C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7.exe и все работало отлично. Я могу просто поместить это как запланированное задание, чтобы оно все еще могло запускаться автоматически (или, возможно, просто включить его

Другие вопросы по тегам