«Сервер Tomcat v7.0 Server на localhost не вдалося запустити» без трасування стека, поки він працює в терміналі


81

Отож отримав цей проект, який до вихідних працював чудово (є інші проблеми, але принаймні Tomcat запущений). Тепер, коли я намагаюся запустити сервер Tomcat, він одразу видає таку помилку:

Server Tomcat v7.0 Server at localhost failed to start.

Однак я можу запустити Tomcat чудово через термінал, і ця проблема виникає в Eclipse ( Eclipse Java EE IDE для веб-розробників. Версія: Juno Service Release 1 Ідентифікатор збірки: 20121004-1855 )

Я переглянув кілька форумів, намагаючись знайти рішення, але безрезультатно! Будь ласка, допоможіть комусь, хто потребує.


опублікувати повну помилку стека?
Амі

@ILLA немає жодного. Тільки це. Що найдивніше в цьому ...
Марвін Еффінг,

Приємне питання, найдивніша помилка, з якою я коли-небудь стикався. Мім стався у Fedora 17. Затьмарення завантажується з репозитарію Fedora.
huahsin68

Вирішено шляхом видалення певної папки в папці Сервери, видалення Сервера в Eclipse, а потім створення нового Сервера в Eclipse (вкладка Сервер)
CodyBugstein

4
Це одна з найпоширеніших проблем, з якими стикається розробник. З мого досвіду я можу порадити, що більшу частину помилок викликає файл web.xml. Спробуйте видалити кілька новостворених тегів сервлета та зіставлення сервлетів.
Prateek Joshi

Відповіді:


58

Щоб вирішити цю проблему, потрібно видалити .snapфайл, що знаходиться в каталозі:

<workspace-directory>\.metadata\.plugins\org.eclipse.core.resources

Після видалення цього файлу ви можете без проблем запустити Eclipse.


33
будь ласка, де цей файл? у мене немає такого файлу
Вільям Кінаан,

18
У цьому каталозі немає такого файлу.
MrYo

34
@MarvinEffing Я видаляю цей файл, але мені це не допомогло!
Lrrr

1
Це спрацювало для мене, але чи можете ви пояснити, чому так вийшло? Що це за файл? Чому це спричиняє помилку? Крім того, людям, які не бачать файл: спробуйте перезапустити eclipse, ось що мені потрібно було зробити.
Kevin Workman

1
Після того, як я видалив файл прив'язки (це був 0.snap), я перейшов до eclipse, клацнув правою кнопкою миші на сервері та вибрав Clean. Потім запустіть сервер, і він запрацює.
sunlover3,

104
  1. Відкрийте вкладку Сервери в Windows → Показати Перегляд → Меню Сервери

  2. Клацніть правою кнопкою миші на сервері та видаліть його

  3. Створіть новий сервер, перейшовши Новий → Сервер на вкладці Сервер

  4. Клацніть на посилання "Налаштування середовищ виконання ..."

  5. Виберіть сервер Apache Tomcat v7.0 і видаліть його. Це видалить конфігурацію сервера Tomcat. Тут багато людей помиляються - вони видаляють сервер, але не видаляють середовище виконання.

  6. Натисніть OK і вийдіть із екрана вище.

  7. На екрані нижче виберіть сервер Apache Tomcat v7.0 і натисніть наступну кнопку.

  8. Перейдіть до каталогу встановлення Tomcat

  9. Натисніть Далі та виберіть, який проект ви хочете розгорнути:

  10. Після додавання проекту натисніть кнопку Готово

  11. Тепер запустіть свій сервер. Це виправить час очікування вашого сервера або будь-які проблеми зі старою конфігурацією сервера. Це рішення також може бути використане для виправлення проблем, пов’язаних із «оновленням порту, яке не відбувається».


12
на жаль, це нічого не вирішує ... Eclipse Kepler, Windows 7 32 bit, Tomcat 7 ... Я все ще шукаю реального рішення
Miklos Krivan

2
Я вилучив конфігурацію tomcat із затемнення і знову додав сервер. Працював у мене. Затемнення Юнони.
user2771655 02

1
Дуже багато чувак! ТАК видалення середовища виконання виконувало Tric?
Рахал Канішка

1
як сказав @MiklosKrivan - це теж не працює для мене, але мені цікаво знати, чому і як, на біса, це працює для інших, і, в свою чергу, цікаво дізнатися, чому це не для мене.
nightfury

37

Щоб вирішити цю проблему, вам потрібно видалити папку tmp у наступному каталозі

<workspace-directory>\.metadata\.plugins\org.eclipse.wst.server.core

Якщо виникають проблеми із видаленням цієї папки, перезапустіть програму eclipse, а потім знову видаліть цю папку.


Я не бачу назви папки folder. Where is it? я використовую ubuntu 12.04
MMMMS

@MMMMS, перед прихованими файлами та каталогами стоїть крапка. У більшості систем * nix ви можете шукати такі файли та каталоги за допомогою ls -a
FRK

22

У моєму випадку проблема xmlякось полягала в коді.

Мій web.xmlфайл виглядав так:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>index</servlet-name>
        <jsp-file>index.jsp</jsp-file>
    </servlet>

    <servlet-mapping>
        <servlet-name>index</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

але я змінив його на вигляд

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

</web-app>

і тепер сервер завантажується належним чином. Дивно.


2
У мене була подібна проблема з @WevServletанотацією з неправильним шляхом.
thomas88wp

2
точно @ thomas88wp, або ви використовуєте анотацію @WebServletі видаляєте відображення сервлета, або навпаки. спасибі, ти вирішив мою проблему :)
L.Zaki

Дякую! Я хапав голову, але це допомогло!
Шивангі Гупта,

15

Сервер Tomcat v7.0 Сервер на localhost не вдалося запустити.

Цю помилку вирішено в трьох випадках

1.Очистіть проект та сервер

Або

2. Видаліть файл .snap з цього каталогу

<workspace-directory>\.metadata\.plugins\org.eclipse.core.resources

Або

3. Видаліть тимчасовий файл із цього каталогу

<workspace-directory>\.metadata\.plugins\org.eclipse.wst.server.core

1
Я видалив папку temp, і тепер сервер успішно запускається, але він не запускає мою веб-програму.
Рахул Мунджал,

Працював у мене на Ubuntu 18.04 з Eclipse 2019-03 та Tomcat 8.5.43 :)
yanike

Клацніть правою кнопкою миші на Tomcat and Clean
Chinmoy

13

Я зіткнувся з цією проблемою, оскільки я визначаю відображення сервлетів у класі сервлетів та web.xml.

Ви повинні бути обережними, щоб перевірити, чи не визначили ви зіставлення сервлетів у своєму класі сервлетів та web.xml

1) видалити @WebServlet("...")

@WebServlet("/Login")
public class Login extends HttpServlet {
}

АБО

2) видалити <servlet></servlet> <servlet-mapping></servlet-mapping>

<servlet>
    <servlet-name>ServletLogin</servlet-name>
    <servlet-class>Login</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ServletLogin</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>

Причина:

Я використовую apache tomcat 7.0, який підтримує сервлет 3.0.

З анотаціями Java EE стандартним дескриптором розгортання web.xml є

за бажанням. Відповідно до специфікації сервлету 3.0 на

http://jcp.org/en/jsr/detail?id=315


Це точно це. Я двічі зіставляв той самий сервлет, це виправлення спрацювало.
George

11

Жодна із згаданих вище відповідей не спрацювала для мене. Я використовую Tomcat 9 в моїй IDE Eclipse. Тому я спробував наступні кроки на моєму Eclipse Neon.

Крок 1: Клацніть на Serversвкладку, щоб побачити свій сервер. У моєму випадку це виглядає так:

введіть тут опис зображення

Крок 2: Клацніть правою кнопкою миші на сервері, виберіть Properties, ви побачите наступне вікно. Натисніть Switch Location, це змінить місце розташування на те, що показано на зображенні нижче, із типового. Клацніть, Applyа потім OKзакрийте вікно.

введіть тут опис зображення

Крок # 3 Двічі клацніть на сервері Tomcat, який відкриє Overviewопцію, як показано на малюнку нижче. Server LocationsЧастина була активна для мене , коли я зробив (це показано неактивно в зображенні , тому що я вже зробив це в моєму кінці і у мене є мій сервер працює) , що і я вибрав другий варіант кнопки радіо , яке Use Tomcat installation (takes control of Tomcat installation). Потім я закрив цю опцію, зберіг зміни після появи запиту та запустив сервер. Це почало працювати нормально.

введіть тут опис зображення


1
Велике спасибі, це єдиний варіант, який мені спрацював!
Майк Б.

Це вирішило проблему, дякую людині. Дивно, що рішення, які справді працюють, отримують невеликі голоси.
Науковий метод

7

У моєму випадку проблема полягала у файлі web.xml, де я забув поставити перед url-шаблоном "/" (наприклад, /login.do).

Що вирішило мою проблему, як згадувалося вище @ Ajak6, шляхом додавання API сервлетів як зовнішньої бібліотеки JAR для проекту.

Однак я знайшов кращий спосіб, додавши Tomcat до цільового середовища виконання наступним чином;

1) проект> властивості

2) у бічному меню виберіть "Цільовий час виконання"

3) виберіть Tomcat (натисніть застосувати)

4) натисніть ОК


У моєму випадку це добре працювало з Анотаціями, але коли я додав конфігурації сервлету в web.xml - я забув поставити це /, і у мене виникла ця проблема. На щастя, це я швидко вирішив. Дякую Емаде!
ppalancica

6

Створення нової робочої області також може вирішити цю проблему ..


32
що б втікати від проблеми, яка не вирішується.
Yauraw Gadav 02

1
Насправді не буде, бо це, мабуть, щось у картографічному проектуванні.
George

6

відкрийте файл web.xml. (якщо ви не знаєте, де це, просто погуглить.) Це приблизно так:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
.
.
.
.
</web-app>

трохи нижче <?xml version="1.0" encoding="UTF-8"?>рядка, додайте тег <element>і закрийте його внизу </element>тегом. Готово.


Розпочато і помилка знищена. Але не слухає. Для чого призначений елемент?
Єргалем

5

У мене була та ж проблема на моєму сервері tomcat, але коли я глибоко перевірив, я виявив, що додаю новий тег у свій файл web.xml, і сервер не приймає його, тому перевірте свій файл, якщо відбулось якесь оновлення, перезапустіть tomcat і буде добре .


1
Я переплутав між <servlet> і <servlet-mapping> у своєму web.xml і отримав цю помилку. Дякую! ваше рішення спрацювало для мене.
Aafreen Sheikh

1
добре, добре для вас, це спрацювало і для мене, і, звичайно, якщо ви заплутаєтесь між ними, сервер не запуститься, тому що <servlet> визначено для контейнера та <servlet-mapping> Зіставлення з сервлетом та url для запитів http.
REDA

omg, не можу повірити. У мене була та сама проблема. Спасибі, не можу сказати тобі, наскільки я тобі вдячний.
Ракеш Ядав

3

Все працювало нормально одну секунду, а потім мій сервер почав видавати мені цю помилку. Я переглянув усі відповіді, згадані тут, і для мене працювало це просте рішення:

Видалення сервера, а потім налаштування нового

Якщо ви впевнені, що нічого не змінили, і помилка просто з’явилася, НЕ починайте видаляти .snap-файли та інші тимчасові файли. Це зробить лише більше проблем. І якщо помилка сталася через деякі внесені вами зміни, ця помилка, безумовно, буде через деякі помилки у файлі web.xml.

PS Зміна робочої області не дасть вам абсолютно ніякої користі, тому що якщо проблема полягає у вашому проекті, то вона все одно виникне в новому робочому просторі, коли ви імпортуєте проект!


2

Спробуйте видалити існуючий сервер tomcat на консолі сервера, якщо у вас немає консолі, ви можете перейти до "Показати вигляд -> сервер", а потім видалити сервер, клацнувши правою кнопкою миші на ньому. Додайте новий сервер, це, безсумнівно, допоможе вам.


Я прочитав усі коментарі .. це єдиний варіант, який працював у мене.
Vineela Thonupunuri

2

У мене була та сама проблема, і жодна з відповідей тут не допомогла мені. Тож після кількох годин пошуку я знайшов для себе рішення і, сподіваюся, воно допоможе комусь іншому.

Це рішення для тих, хто отримує "Сервер Tomcat v7.0 Server на localhost не вдалося запустити". помилка після налаштування сервера tomcat у eclipse та спроби запустити на ньому проект.

Після налаштування сервера tomcat в eclipse вам потрібно скопіювати каталог "WEB-INF" із вашого tomcat. C: \ ...% TOMCAT_HOME% \ webapps \ ROOT і їх ви знайдете "WEB-INF", просто скопіюйте та вставте його у свою папку WebContent у вашому проекті eclipse (перезапишіть файл web.xml).

Сподіваюся, це допомагає.


2

у моєму випадку помилка полягала в тому, що він не зміг знайти сервлет-api.jar. Не знаю, чому раптом це почало давати помилку за це. Тому що раніше він працював без жодних проблем. Після надання сервлету-api.jar у опції шляху побудови сервер успішно запустився.


спробувавши все вищесказане, це насправді мене провело. БУДО НЕДОСТУПНІСТЬ ЯКИХ ЗАЛЕЖНОСТЕЙ
Молодий Еміль

2

У моєму випадку я розгорнув свою папку tomcat (ту, в якій є всі файли) в інше місце.

Потім, коли я запустив eclipse і спробував запустити свій проект за допомогою jsp і сервлетів, я отримав цю саму помилку.

Я спробував усі відповіді тут, але це все одно нічого не змінило. Рішенням для мене було розмістити всі файли tomcat JAR у бібліотеці проекту так:

  1. Перейдіть до Eclipse
  2. Клацніть правою кнопкою миші на проекті, над яким ви працюєте> Побудувати шлях> Налаштувати шлях побудови ...> Бібліотеки> Додати зовнішні JAR-файли
  3. виберіть усі файли JAR із Tomcat / bin та Tomcat / lib
  4. Натисніть "Ok"

Тепер ви повинні знайти їх у папці "Бібліотеки" вашого проекту, і тоді він повинен працювати.


2

1 - Перейдіть до каталогу робочої області ».metadata» .plugins »org.eclipse.wst.server.core папка.

2- Видаліть папку tmp.

3- Перезапустіть Eclipse IDE


1

У моєму робочому середовищі eclipse це було вирішено, виконавши наведені нижче дії. Вікно -> Налаштування -> Мережеві підключення -> Змініть «Активний провайдер» на «Прямий», замість «Рідний». Ви можете спробувати.


1

Ці вихідні я стикався з подібною проблемою. Спробував усі вищезазначені трюки, але жоден з них не спрацював у мене. (Робота в Eclipse LUNA)

Потім я проаналізував, що безпосередньо перед створенням певного сервлету я успішно запускав Apache Tomcat v7.0. Що було "RefreshServlet", як показано нижче:

RefreshServlet.java

Так що практикуючи сервлети, щоб зрозуміти функціонування "Автообновлення". Коли я видаляю цей сервлет з моєї програми, він працює нормально, але коли я намагаюся додати і запустити цей сервлет, він видає ту ж помилку "Apache Tomcat v7.0 не вдалося запустити"

Не знаю чому, але лише видалення цього сервлету добре працює для мене, щоб запустити решту моєї програми.

Отже, суть пропозиції від мене полягає в тому, що якщо не працює будь-який інший трюк, спробуйте видалити будь-який останній сервлет або будь-який клас, який ви щойно створили, перш ніж отримати цю помилку, і це може спрацювати і для вас у решті програми.

Буде вдячне будь-яке подальше пояснення. Дякую


1
Можливо, у вас є кілька сервлетів, які прослуховують одну і ту ж URL-адресу, що призведе до того, що Tomcat не зможе запуститися.
alttag 02.03.16

1

Перевірте свій веб-дескриптор (web.xml) або ваші сервлети (де ви коментуєте, поставте щось на зразок '@WebServlet ("/ ім'я сервлета")' на наявність дублікатів. Якщо такі є, видаліть їх.


1

Я вирішив цю проблему, клацнувши правою кнопкою миші на сервері tomcat на вкладці Сервер і натиснувши "Очистити робочий каталог Tomcat"


1
Це мені допомоглоServer Tomcat v8.5 Server at localhost failed to start.
Ніпун Тарукша

0

Ви можете клацнути правою кнопкою миші на apache-tomcat, вибрати властивості та натиснути кнопку Відновити за замовчуванням.


0

У моєму випадку проблема була спричинена синтаксичною помилкою в переданих аргументах. У мене був пробіл між ключем і значенням при використанні '-D'

тобто

-DMyArg= MyValue

замість

-DMyArg=MyValue

0

двічі клацніть на сервері apache у вкладці сервера eclipse. тепер змініть порт адміністратора tomacat на 8010, порт HTTP на 8082 та порт Ajp на 8011.


0

Якщо всі відповіді не працюють для вас, просто змініть поточну робочу область.

файл-> переключити робочу область

Це вирішить вашу проблему.


Останній і хороший варіант. Але деякі головні болі є для зміни робочого простору.
Sagar007,

0

У моєму випадку проблема полягала в іншому екземплярі запущеного Tomcat. Я зупинив його від служб, і проблема вирішилася


0

Спробувавши всі вищезазначені кроки, проблема не була вирішена.

Нарешті це вирішено за допомогою кроків нижче.

1- Перевірте файл .log у вашому каталозі робочого простору. Проблема з версією Java

"Викликано: java.io.IOException: Не вдається запустити програму" C: \ jdk1.7.0_45 \ bin \ java ": Помилка CreateProcess = 193,% 1 не є дійсним додатком Win32 на java.lang.ProcessBuilder.start (Невідомо Джерело) на java.lang.Runtime.exec (Невідоме джерело) на java.lang.Runtime.exec (Невідоме джерело) на org.eclipse.debug.core.DebugPlugin.exec (DebugPlugin.java:869) ... ще 80

Викликано: java.io.IOException: Помилка CreateProcess = 193,% 1 не є дійсним додатком Win32 у java.lang.ProcessImpl.create (власний метод) на java.lang.ProcessImpl. (Невідоме джерело) на java.lang. ProcessImpl.start (невідоме джерело) "

Я встановив правильну сумісну з ОС JDK, і проблема була вирішена. PS: Я явно встановив шлях JDK через затемнення (Вікно-> налаштування-> встановив JRE), але після встановлення правильного шляху JDK у мене це працює нормально.


0

Перша перевірка у вашому Web.xml, чи є кілька тегів <зіставлення сервлетів> з різними іменами. Якщо так, то видаліть непотрібні та запустіть .. Це має спрацювати нормально

АБО

Щоб вирішити цю проблему, потрібно видалити файл .snap, який знаходиться в каталозі.

Перейдіть до робочої області Eclipse, яку ви використовуєте, -> workspace.metadata.plugins \ org.eclipse.core.resources \ snapfile

Видаліть файл оснастки.

Після видалення цього файлу видаліть сервер Tomcat потім також видаліть середовище виконання сервера, яке вибрано як Apache tomcat. Потім знову додайте сервер і перейдіть до проекту -> Властивості -> Грані проекту -> Праворуч ви знайдете вкладки Деталі та час роботи. Клацніть Runtimes і встановіть прапорець Apache, який уже там (Якщо немає, додайте його)

Змініть номери портів і запустіть його.


0

спробуйте видалити всі залежності вашого проекту з локального сховища maven (.m2).

Шлях: C: \ Users \ ім'я_користувача \ .m2 \ репозиторій

закрийте eclipse і відкрийте знову, він автоматично завантажить всі залежності.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.