Warum Jetty hat nicht CometServerServlet von Rocket-Paket gefunden?
-
28-09-2019 - |
Frage
Ich habe eine gemeinsame GWT-Anwendung, die (versuchen zu) Rakete-Framework mit einem CometServerServlet zu implementieren. Nachdem ich meine Servlet in web.xml und mein app.gwt.xml registriert, wie folgt aus:
App.gwt.xml:
<servlet path="/server" class="myapp.server.MyCometServlet"/>
web.xml
<servlet>
<servlet-name>myCometServlet</servlet-name>
<servlet-class>myapp.server.MyCometServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myCometServlet</servlet-name>
<url-pattern>/myapp/server</url-pattern>
</servlet-mapping>
Jetty findet offenbar nicht die CometServerServlet, aus dem mein MyCometServlet erweitert:
WARNUNG: Fehler beim Start Handler java.lang.NoClassDefFoundError: Rakete / remoting / server / Komet / CometServerServlet
Verursacht durch: java.lang.ClassNotFoundException: rocket.remoting.server.comet.CometServerServlet
Das ist seltsam, weil ich das Rocket-Glas zu meinem Projekt hinzugefügt haben.
Könnte jemand erklären, warum dieser Fehler passiert?
Ich könnte verstehen, wenn ich „registriert“ das Servlet in einer falschen Weise oder so etwas, aber was Jetty Punkt (oder wer?) Sieht für die CometServerServlet und versagt bei, es zu finden?
Lösung
Hinzufügen das Glas zu einem Projekt (zum Beispiel in einigen IDE) wird Kompilierungsfehlern entfernen, weil das Glas kann bei der Kompilierung gefunden werden.
Aber Jetty muss die Bibliothek zur Laufzeit, und die übliche Art und Weise, es zu schaffen, ist, indem es in dem WEB-INF/lib
Ordner Ihres Projektes setzen.
Natürlich, stellen Sie sicher, dass die App anschließend erneut bereitstellen (zum Beispiel, wenn Sie Dev-Modus verwenden, klicken Sie Refresh im "Development Mode" -Ansicht).