wake-up-neo.net

Tomcat konnte .war nicht bereitstellen

Ich versuche, das Tutorial " this " zum Erstellen eines einfachen REST - Webdienstes zu befolgen. Allerdings kann ich es auf Tomcat bereitstellen und es wird eine Ausnahme ausgelöst:

FAIL - Application at context path /restful could not be started
FAIL - Encountered exception org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/restful]]

Ich habe nach einer Lösung gesucht und diese Frage und diese Eins gefunden - und sie lassen mich denken, dass es sich um ein Servlet-Mapping-Problem handelt. Ich bin mir jedoch nicht sicher, wie ich es beheben kann!

Hier ist meine Logdatei:

18/12/2012 9:57:16 AM org.Apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive /opt/Tomcat7/webapps/restful.war
Java.lang.IllegalStateException: ContainerBase.addChild: start:
org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/restful]]
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:904)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:877)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:633)
    at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:977)
    at org.Apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.Java:1655)
    at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:441)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:619)

hier ist meine web.xml-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://Java.Sun.com/xml/ns/javaee" version="3.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee
        http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <servlet>
    <servlet-name>RestfulContainer</servlet-name>
    <servlet-class>com.Sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.Sun.jersey.config.property.packages</param-name>
        <param-value>com.mcnz.ws</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>RestfulContainer</servlet-name>
    <url-pattern>/resources/*</url-pattern>
  </servlet-mapping>    

</web-app>

und auf die Gefahr hin, Ihnen viel zu viele Informationen zu geben, hier ein ls meiner Ordnerstruktur:

.:
WEB-INF

./WEB-INF:
classes
lib
web.xml

./WEB-INF/classes:
com

./WEB-INF/classes/com:
mcnz

./WEB-INF/classes/com/mcnz:
ws

./WEB-INF/classes/com/mcnz/ws:
HelloWorldResource.class
HelloWorldResource.Java

./WEB-INF/lib:
asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.16.jar
jersey-core-1.16.jar
jersey-json-1.16.jar
jersey-server-1.16.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
15
Pete

Wie der obige Kommentar zeigt, stellte sich als Problem heraus, dass die Anwendung web.xml auf eine Java-Klasse in einer Servlet-Definition verwies. Das Problem wurde behoben, indem sichergestellt wurde, dass die Anwendung diese Klasse tatsächlich enthielt. Die fehlende JAR-Datei wurde gefunden und im Verzeichnis WEB-INF/lib abgelegt.

10
EJK

Ich hatte ein ähnliches Problem, als ich ncwms auf Apache Tomcat/8.5.38 laufen ließ. Offenbar musste ich jetzt einige zusätzliche Java-Bibliotheken hinzufügen, die in der neuesten Java-Version entfernt wurden.

(Details finden Sie hier: So lösen Sie Java.lang.NoClassDefFoundError auf: javax/xml/bind/JAXBException in Java 9 )

Die Änderung war in dieser Datei: /Opt/Tomcat/bin/catalina.sh

Java_OPTS="$Java_OPTS $JSSE_OPTS --add-modules Java.xml.bind"

Aber auch das war nicht genug für ncwms. Beim Importieren von Datensätzen kam es später zu Problemen. Daher habe ich eine andere Java-Version verwendet:

Java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
0
user3788120