Note that there are some explanatory texts on larger screens.

plurals
  1. POHow do I write a simple Servlet for Jetty using Eclipse?
    text
    copied!<p>I downloaded Eclipse for Java EE and Jetty 8.1 and would like to implement a very simple Servlet.</p> <p>Jetty works fine when I start it using <code>java -jar start.jar</code>.</p> <p>To develop the Servlet I did this:</p> <ol> <li><p>In Eclipse, I choosed "New Dynamic Web Project".</p></li> <li><p>I added <code>jetty\lib\servlet-api-3.0.jar</code> to the "Build Path" in Eclipse.</p></li> <li><p>In that project, "New Servlet", and a Servlet was generated and I added some code:</p> <pre><code>/** * Servlet implementation class MyServlet */ @WebServlet("/MyServlet") public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("&lt;html&gt;&lt;body&gt;&lt;h1&gt;My Servlet&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } </code></pre></li> <li><p>I created a file <code>web.xml</code> in <code>WebContent\WEB-INF\web.xml</code> with this content:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt; &lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"&gt; &lt;servlet&gt; &lt;servlet-name&gt;My Servlet&lt;/servlet-name&gt; &lt;servlet-class&gt;MyServlet.class&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;My Servlet&lt;/servlet-name&gt; &lt;url-pattern&gt;/Servlet&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; </code></pre> <p></p></li> <li><p>I copied the compiled <code>.class</code>-files in <code>build\classes</code> to <code>WebContent\WEB-INF\classes</code></p></li> <li><p>Now I choose to Export the project as a <code>.war</code>-file to <code>jetty\webapps\MySite.war</code>.</p></li> <li><p>I start Jetty with <code>java -jar start.jar</code> and visit <code>localhost:8080/MySite/Servlet</code> but now I get this message:</p> <pre><code>Servlet Not Initialized javax.servlet.UnavailableException: Servlet Not Initialized at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:546) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:485) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:483) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:412) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) at org.eclipse.jetty.server.Server.handle(Server.java:351) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:451) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:916) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:647) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:233) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:615) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) at java.lang.Thread.run(Thread.java:722) </code></pre></li> </ol> <p>and if I visit <code>localhost:8080/MySite/</code> I see two folders <code>WEB-INF\</code> and <code>META-INF\</code> both with size <code>0 bytes</code>.</p> <p>So it doesn't look like my <code>.war</code>-export in Eclipse worked.</p> <p>How do I export my simple Servlet for Jetty using Eclipse?</p> <hr> <p>I have now installed the <a href="http://wiki.eclipse.org/Jetty_WTP_Plugin" rel="noreferrer">Jetty WTP plugin</a> for Eclipse, but I can't run this servlet using it:</p> <pre><code>2012-01-30 10:06:50.322:INFO:oejs.Server:jetty-8.1.0.RC4 2012-01-30 10:06:50.353:INFO:oejdp.ScanningAppProvider:Deployment monitor C:\Users\Jonas\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps at interval 1 2012-01-30 10:06:50.353:INFO:oejdp.ScanningAppProvider:Deployment monitor C:\Users\Jonas\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\contexts at interval 1 2012-01-30 10:06:50.353:INFO:oejd.DeploymentManager:Deployable added: C:\Users\Jonas\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\contexts\MySite.xml 2012-01-30 10:06:50.650:WARN:oejuc.AbstractLifeCycle:FAILED o.e.j.w.WebAppContext{/MySite,file:/C:/Users/Jonas/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/MySite/},C:\Users\Jonas\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0/wtpwebapps/MySite: java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor java.lang.NoClassDefFoundError: org/objectweb/asm/ClassVisitor at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:111) at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:73) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:428) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1208) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36) at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183) at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:491) at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:138) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:142) at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:53) at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:604) at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:535) at org.eclipse.jetty.util.Scanner.scan(Scanner.java:398) at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:332) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:118) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:552) at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:227) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:58) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:53) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:91) at org.eclipse.jetty.server.Server.doStart(Server.java:263) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1214) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1137) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jetty.start.Main.invokeMain(Main.java:457) at org.eclipse.jetty.start.Main.start(Main.java:600) at org.eclipse.jetty.start.Main.main(Main.java:82) Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.eclipse.jetty.annotations.AnnotationConfiguration.createAnnotationParser(AnnotationConfiguration.java:111) at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:73) at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:428) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1208) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36) at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183) at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:491) at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:138) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:142) at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:53) at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:604) at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:535) at org.eclipse.jetty.util.Scanner.scan(Scanner.java:398) at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:332) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:118) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:552) at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:227) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:58) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:53) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:91) at org.eclipse.jetty.server.Server.doStart(Server.java:263) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1214) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1137) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jetty.start.Main.invokeMain(Main.java:457) at org.eclipse.jetty.start.Main.start(Main.java:600) at org.eclipse.jetty.start.Main.main(Main.java:82) </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload