title: Making services in Tapestry 5: No service implements the interface
body: <p>I'm developing my first Tapestry application with a login system based on a Hibernate database.</p>
  
  <p>On one page with a session object, I want to call my <code>Authenticator</code> service class, which also gets the session injected and does some stuff. My problem is, I can't get any services to run, it's been very frustrating, despite me following simple guides like this one: <a href="http://code.google.com/p/shams/wiki/Service" rel="nofollow">http://code.google.com/p/shams/wiki/Service</a></p>
  
  <p>In my <code>services</code> package, I got the <code>Authenticator.java</code> and <code>AuthenticatorImpl.java</code> interface and implemented class. In the <code>AppModule</code> class, I call</p>
  
  <pre><code>    binder.bind(Authenticator.class, AuthenticatorImpl.class);
  </code></pre>
  
  <p>And in my page 'ShowAllUsers' I inject my Authenticator service object:</p>
  
  <pre><code>...
  public class ShowAllUsers{
  @Inject
  private Session session;
  
  @Inject
  private Authenticator authenticator;
  ...
  }
  </code></pre>
  
  <p>But when I load the page on my server, I receive following error:</p>
  
  <pre><code>org.apache.tapestry5.ioc.internal.OperationException
  Error obtaining injected value for field de.webtech2.pages.user.ShowAllUsers.authenticator: No service implements the interface de.webtech2.services.Authenticator.
  
  trace:
  - Creating instantiator for component class de.webtech2.pages.user.ShowAllUsers
  - Running component class transformations on de.webtech2.pages.user.ShowAllUsers
  - Injecting field de.webtech2.pages.user.ShowAllUsers.authenticator
  </code></pre>
  
  <p>But my AppModule does bind the class to the interface successfully. In the Maven build console I can read "Authenticator: DEFINED" and if I try to bind it in another module, it complains because it's bound in AppMopule already.</p>
  
  <p>Why doesn't tapestry see the implementation? What am I doing wrong?</p>