Невозможно создать файл [META-INF / war-tracker] Tomcat 9 linux

Журналы Tomcat:

java.io.IOException: Unable to create the file [/usr/local/tomcat/webapps/mywebapp/META-INF/war-tracker]
    at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:180)
    at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:609)
    at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:742)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:182)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1858)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:972)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

Вдруг сервер не работает, Не извлекается Файл WAR в веб-приложениях, не может работать с запросами API,

Файл контекста:

<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

Я попытался выполнить развертывание из менеджера на странице TOMCAT, и снова безуспешно.

найти в журналах: Невозможно создать файл [/ usr / local / tomcat / webapps / mywebapp / META-INF / war-tracker] Я искал решения и не нашел, там кто-нибудь что с ним случилось?

Tomcat: апач-кот-9.0.13 openjdk версия "1.8.0_171"

Я чувствую, что есть еще одно исключение. Возможно, ошибка отказа в разрешении? Можете ли вы посмотреть дальше в журнале, чтобы узнать, есть ли дополнительная информация?

stdunbar 15.11.2018 18:17

Привет, @stdunbart, подробностей об ошибке больше нет.

Lior A 15.11.2018 18:48

Я удалил кота и установил еще меньше версий и ту же ошибку.

Lior A 15.11.2018 18:50

@stdunbar я меняю права доступа к файлу войны, например: chmod -R 777 mywebapp.war и ничего, что tomcat не извлекает файл войны. и в журнале ошибка.

Lior A 15.11.2018 18:51

Без дополнительной информации это всего лишь предположение. Разрешения для вашего веб-приложения не важны - я считаю, что это разрешения для каталога META-INF. Вам не хватает места на диске? Опять же, боюсь, я угадываю имеющуюся информацию.

stdunbar 15.11.2018 19:09

Какую дополнительную информацию я могу предоставить?

Lior A 15.11.2018 19:13

А что насчет МЕТА-ИНФ? @stdunbar

Lior A 15.11.2018 19:13

Когда вы создаете файл .war, каковы разрешения для каталога META-INF? Вы создаете файл .war на машине Windows и разворачиваете на машине Linux? Если права доступа к каталогу META-INF не разрешают запись, вы не сможете извлечь в него файл.

stdunbar 15.11.2018 19:31

Да, я даю все разрешения этой папке из окон и приложения и вставляю в папку webapp в Linux.

Lior A 15.11.2018 19:54

Когда папка извлекается, какие у нее разрешения в Linux?

stdunbar 15.11.2018 20:01

-rw-r - r--. 1 root root 15461413 15 ноя, 15:43 infinidat.war

Lior A 15.11.2018 20:09

Это root-разрешение на нем ...

Lior A 15.11.2018 20:10

Нет, если бы вы сделали jar -xf infinidat.war в Linux во временном каталоге и сделали ls -ld META-INF, каковы были разрешения у каталога META-INF?

stdunbar 15.11.2018 21:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
13
4 481
2

Ответы 2

У нас было точно такое же поведение под Windows. В нашем случае объяснение было простым, тогда как найти его сложно: в развертываемом нами * .war уже был файл META-INF/war-tracker. Предположительно, война была спровоцирована вручную на основе уже распакованного дерева каталогов, а не на основе IDE.

Проблема заключается в файле "META-INF / war-tracker" в развертывании-war:

Из документации Tomcat:

Примечание. Если Tomcat расширяет файл WAR, он добавит файл (/ META-INF / war-tracking) в распакованную структуру каталогов, которую он использует для обнаружения изменений в файле WAR, когда Tomcat не запущен. Любое такое изменение приведет к удалению расширенного каталога и развертыванию обновленного файла WAR при следующем запуске Tomcat.

Похоже, вы вручную запаковали war-файл и включили META-INF / war-tracker. Во время развертывания Tomcat (начиная с версии 8 AFAIK) пытается создать указанный файл для обнаружения изменений. Однако, если такой файл существует, Tomcat не сможет создать файл и выдаст исключение, о котором вы упомянули выше.

Решение:

Перед развертыванием удалите файл «META-INF / war-tracker» из вашего файла войны, и все готово.

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