Запуск Tomcat не удался из Netbeans

У меня проблема с запуском Apache Tomcat 6 из Netbeans IDE 7.4 (в версии 7.3 у меня были те же проблемы. Другие люди упомянули, что эта проблема существует и в других версиях, таких как 8.0 и т.д.).

Что я сделал:

  • удалить установленный Tomcat 7 (не удаляя его, у меня были те же трудности)
  • добавить новый сервер, загруженный с сайта Apache Tomcat (версия apache-tomcat-6.0.39, с другой версией у меня были те же проблемы)
  • местоположение моего сервера: D:\apache-tomcat-netbeans
  • системная переменная CATALINA_HOME: D:\apache-tomcat-netbeans
  • системная переменная JAVA HOME: C:\Program Files\Java\jdk1.7.0_51\
  • Пользователь tomcat: я разрешаю netbeans создавать нового пользователя, называемого tomcat с паролем tomcat. Когда я открываю {tomcat}\conf\tomcat-users.xml файл после добавления сервера, есть информация о моем пользователе:

    < user password = "tomcat" role = "manager, admin" username = "tomcat" /" >

Когда я сейчас нажимаю "start", я получил " Запуск Tomcat не удалось".

Мои подозрения:

  • Я работаю над Windows 7 как администратор, поэтому я думаю, что это не проблема с правами на файлы.
  • Отключение прокси-сервера не помогло.
  • Журналы: Создан только один файл журнала: localhost.2014-03-06.log, и он полностью пуст.
  • Запуск Netbeans "как администратора" не помог.
  • Из командной строки все в порядке, у меня нет проблем с запуском в обычном или отладочном режиме (catalina.bat jpda start или startup.bat)

Ответ 1

Он затрагивает как минимум версии NetBeans с 7.4 по 8.0.2. Это было впервые сообщено с версии 8.0 и зафиксировано в NetBeans 8.1. У этой проблемы была бы проблема для любой версии tomcat (подтвержденной для версий с 7.0.56 по 8.0.28).

Особенности описаны как Ошибка Netbeans # 248182.

Эта проблема также связана с сообщениями, в которых упоминается следующий вывод ошибки:

'127.0.0.1 *' не распознается как внутренняя или внешняя команда, операционная программа или командный файл.

Для tomcat, установленного из zip файла, я исправил его, изменив файл catalina.bat в каталоге tomcat bin.

Найдите следующую конфигурацию в файле catalina.bat.

:noJuliConfig
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%"

:noJuliManager
set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%"

И измените его, как показано ниже, удалив двойные кавычки:

:noJuliConfig
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

:noJuliManager
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

Теперь сохраните изменения и запустите свой tomcat из NetBeans.

Ответ 2

Это влияет на:

  • Все версии Tomcat, начиная с 8.5.3 и далее.
  • Все версии Netbeans до 8.1 (это исправлено в Netbeans 8.2).

Это связано с тем, что Netbeans не видит, что этот tomcat запущен, хотя он начался просто отлично.

Я зарегистрировал Ошибка # 262749 с NetBeans.

Обход

В файле server.xml в элементе Connector для HTTP/1.1 добавьте следующий атрибут: server="Apache-Coyote/1.1".

Пример:

<Connector
  connectionTimeout="20000"
  port="8080"
  protocol="HTTP/1.1"
  redirectPort="8443"
  server="Apache-Coyote/1.1"
/>

Причина

Причиной этого является то, что до 8.5.3 по умолчанию устанавливался заголовок сервера как Apache-Coyote/1.1, а с 8.5.3 это значение по умолчанию теперь было изменено на пустое. Очевидно, Netbeans проверяет этот заголовок.

Возможно, в будущем мы можем ожидать исправления в netbeans, рассматривающих эту проблему.

Мне удалось отследить его до изменения документации.

Tomcat 8.5:

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

Tomcat 8.0:

"Переопределяет заголовок сервера для ответа HTTP. Если установлено, значение для этого атрибута переопределяет значение по умолчанию Tomcat и любой заголовок сервера установленных веб-приложением. Если не установлено, любое значение, указанное в используется приложение. Если приложение не указывает значение, то Используется Apache-Coyote/1.1. Если вы не параноик, вам не понадобится эта функция."

Это объясняет необходимость явного добавления атрибута сервера с версии 8.5.3.

Ответ 3

Кроме того, очень вероятно, что проблема с настройками прокси.

Любой, кто не преодолел проблемы с Tomact, попробуйте в NetBeans выбрать Без прокси на вкладке Инструменты → Параметры → Общие.

Это помогло мне.

Ответ 4

Для того, чтобы NetBeans мог взаимодействовать с tomcat, пользователю необходимо настроить его в настройках netbeans для настройки в файле tomcat-users.xml. NetBeans может сделать это автоматически.

То есть, в пределах tomcat-users.xml, который вы можете найти в ${CATALINA_HOME}/conf или ${CATALINA_BASE}/conf,

  • убедитесь, что пользователь (выбранный в netbeans) добавляет роль script-manager

Пример, измените

<user password="tomcat" roles="manager,admin" username="tomcat"/>

Для

<user password="tomcat" roles="manager-script,manager,admin" username="tomcat"/>
  1. убедитесь, что объявлена ​​роль manager-script

Добавить

<role rolename="manager-script"/>

На самом деле онлайн-помощь netbeans неправильно заявляет:

Имя пользователя - указывает имя пользователя, которое IDE использует для входа в приложение диспетчера сервера. Пользователь должен быть связан с ролью менеджера. В первый раз, когда IDE запустила веб-сервер Tomcat, например, через действие меню "Пуск/Стоп" или путем выполнения веб-компонента из среды IDE, среда IDE добавляет администратора пользователя с произвольно сгенерированным паролем в файл tomcat-base-path/conf/tomcat-users.xml. (Щелкните правой кнопкой мыши экземпляр веб-сервера Tomcat node в окне "Службы" и выберите "Свойства". В диалоговом окне "Свойства" свойство Base Directory указывает на каталог base-dir.) Введенная пользователем запись администратора в файле tomcat-users.xml аналогично следующему: <user username="idea" password="woiehh" roles="manager"/>

Роль должна быть manager-script, а не manager.

Для более полного tomcat-users.xml файла:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <user password="tomcat" roles="manager-script" username="tomcat"/>
  <user password="pass" roles="manager-gui" username="me"/>
</tomcat-users>

Есть еще одна хорошая публикация на почему я получаю ошибку развертывания?