title: RESTful web service creation tutorial with Java, Eclipse. Apache Tomcat, not working
body: <p>I'd like to create and run a simple RESTful application on my pc.
  I'm using Java programming language, on Eclipse Helios IDE, with Apache Tomcat 7 server, on a Microsoft Windows Xp operating system.</p>
  
  <p>I've been trying to replicate the same procedure of <a href="http://www.vogella.com/articles/REST/article.html#first" rel="noreferrer">this tutorial (from 3 to 3.4 steps)</a> on my pc, but it does not work.</p>
  
  <p>Here's what I did:</p>
  
  <ul>
  <li><p>created a Dynamic project on Eclipse, with Apache Tomcat 7 settings</p></li>
  <li><p>put my Jersey and jsr311-api-1.0 jar files into the project <code>\WEB-INF\lib\</code> directory</p></li>
  <li><p>copied the code parts from the webpage to my project</p></li>
  <li><p>right-clicked on the project, clicked on "Run as -> Run on server"</p></li>
  <li><p>tried to reach the <code>http://localhost:8080/de.vogella.jersey.first/rest/hello</code> </p></li>
  </ul>
  
  <p>But there's what I see:</p>
  
  <p><img src="https://i.stack.imgur.com/sfA1P.png" alt="Rest screenshot"></p>
  
  <p>Why does it not work?
  What did I do wrong?
  Why?</p>
  
  <p>Many thanks!</p>
  
  <p><strong>Edit:</strong> </p>
  
  <p>Here's what the console says:</p>
  
  <pre><code>25-set-2012 9.35.07 org.apache.catalina.core.AprLifecycleListener init
  INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Programmi\Java\jdk1.6.0_21\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Programmi/Java/jre6/bin/client;C:/Programmi/Java/jre6/bin;C:/Programmi/Java/jre6/lib/i386;C:\WINDOWS\;C:\WINDOWS\System32;"C:\ApacheMaven\apache-maven-3.0.4\bin";C:\WINDOWS\;C:\WINDOWS\System32;"C:\ApacheMaven\apache-maven-3.0.4\bin";C:\WINDOWS\;C:\WINDOWS\System32;"C:\ApacheMaven\apache-maven-3.0.4\bin";C:\WINDOWS\System32;C:\WINDOWS\;C:\WINDOWS\System32; C:\Programmi\R-Language\R-2.13.1\bin\;C:\Programmi\OpenVPN\bin\; C:\Programmi\Java\jdk1.6.0_21\bin\; "C:\ApacheMaven\apache-maven-3.0.4\bin";;C:\Programmi\eclipseEC;
  25-set-2012 9.35.08 org.apache.tomcat.util.digester.SetPropertiesRule begin
  AVVERTENZA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:de.vogella.jersey.first' did not find a matching property.
  25-set-2012 9.35.10 org.apache.coyote.AbstractProtocolHandler init
  INFO: Initializing ProtocolHandler ["http-bio-8080"]
  25-set-2012 9.35.10 org.apache.coyote.AbstractProtocolHandler init
  INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
  25-set-2012 9.35.10 org.apache.catalina.startup.Catalina load
  INFO: Initialization processed in 3459 ms
  25-set-2012 9.35.10 org.apache.catalina.core.StandardService startInternal
  INFO: Starting service Catalina
  25-set-2012 9.35.10 org.apache.catalina.core.StandardEngine startInternal
  INFO: Starting Servlet Engine: Apache Tomcat/7.0.6
  25-set-2012 9.35.11 org.apache.catalina.startup.TaglibUriRule body
  INFO: TLD skipped. URI: urn:com:sun:jersey:api:view is already defined
  25-set-2012 9.35.12 org.apache.catalina.startup.TaglibUriRule body
  INFO: TLD skipped. URI: urn:com:sun:jersey:api:view is already defined
  25-set-2012 9.35.12 org.apache.catalina.startup.TaglibUriRule body
  INFO: TLD skipped. URI: urn:com:sun:jersey:api:view is already defined
  25-set-2012 9.35.12 org.apache.catalina.core.ApplicationContext log
  INFO: Marking servlet Jersey REST Service as unavailable
  25-set-2012 9.35.12 org.apache.catalina.core.StandardContext loadOnStartup
  GRAVE: Servlet /de.vogella.jersey.first threw load() exception
  java.lang.ClassNotFoundException: javax.servlet.Filter
      at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
      at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
      at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
      at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
      at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
      at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
      at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)
      at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
      at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
      at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
      at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1048)
      at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:996)
      at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4741)
      at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5062)
      at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5057)
      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)
  25-set-2012 9.35.12 org.apache.coyote.AbstractProtocolHandler start
  INFO: Starting ProtocolHandler ["http-bio-8080"]
  25-set-2012 9.35.12 org.apache.coyote.AbstractProtocolHandler start
  INFO: Starting ProtocolHandler ["ajp-bio-8009"]
  25-set-2012 9.35.12 org.apache.catalina.startup.Catalina start
  INFO: Server startup in 1790 ms
  </code></pre>
  
  <p>Maybe there's some class missing?</p>