[jboss-user] [Beginners Corner] - Example: java.lang.NoClassDefFoundError (org/jboss/logging/L

nikolajg do-not-reply at jboss.com
Tue Nov 14 07:38:09 EST 2006


Hi JBoss workers,

At first, Im quite new into JBoss. Im going to make an application (see Open socket and JBoss) that should have an open socket against JBoss (being able to send events, but also get notified).

I managed to compile and deploy the Duke's Bank Application, but its a little bit to overwelming to begin with. Intead I found a simple example at http://www.ftponline.com/ (hope its okay that I post the example here).


I get the following error, when I try to connect using the Client app. :

Exception in thread "main" java.lang.NoClassDefFoundError:
org/jboss/logging/Logger
at org.jnp.interfaces.NamingContext.(NamingContext.java:158)
at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingContextFactory.java:56)
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.init(Unknown Source)
at javax.naming.InitialContext.(Unknown Source)
at Client.main(Client.java:25)

------------------------------------------------------------
.\Client.java:

import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.util.Properties;
import com.javapro.ejb.StringProcessor;
import com.javapro.ejb.StringProcessorHome;

public class Client {

  public static void main(String[] args) {

    // first argument must be the input
    if (args.length==0) {
      System.out.println("Please specify the input to convert to upper case.");
      return;
    }
    String input = args[0];

    // preparing properties for constructing an InitialContext object
    Properties properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    properties.put(Context.PROVIDER_URL, "localhost:1099");

    try {
      // Get an initial context
      InitialContext jndiContext = new InitialContext(properties);
      System.out.println("Got context");

      // Get a reference to the Bean
      Object ref  = jndiContext.lookup("StringProcessor");
      System.out.println("Got reference");

      // Get a reference from this to the Bean's Home interface
      StringProcessorHome home = (StringProcessorHome)
        PortableRemoteObject.narrow (ref, StringProcessorHome.class);

      // Create an Adder object from the Home interface
      StringProcessor sp = home.create();
      System.out.println ("Uppercase of '" + input + "' is " + 
        sp.toUpperCase(input));
    }
    catch(Exception e) {
      System.out.println(e.toString());
    }
  }
}

------------------------------------------------------------
META-INF\ejb-jar.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>

<ejb-jar>
  Your first EJB application 
  <display-name>String Processor Application</display-name>
  <enterprise-beans>
    
      <ejb-name>StringProcessor</ejb-name>
      com.javapro.ejb.StringProcessorHome
      com.javapro.ejb.StringProcessor
      <ejb-class>com.javapro.ejb.StringProcessorBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Bean</transaction-type>
    
  </enterprise-beans>
</ejb-jar>


------------------------------------------------------------
.\com\javapro\ejb\StringProcessor.java:

package com.javapro.ejb;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface StringProcessor extends EJBObject {
  public String toUpperCase(String s) throws RemoteException;
}


------------------------------------------------------------
.\com\javapro\ejb\StringProcessorHome.java:

package com.javapro.ejb;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface StringProcessorHome extends EJBHome {
  StringProcessor create() throws RemoteException, CreateException;
}

------------------------------------------------------------
.\com\javapro\ejb\StringProcessorBean.java:

package com.javapro.ejb;

import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class StringProcessorBean implements SessionBean {

  public String toUpperCase(String s) {
    System.out.println("from StringProcessorBean");
    if (s==null)
      return null;
    else 
      return s.toUpperCase();
  }

  public void ejbCreate() {
  }

  public void ejbRemove() {
  }

  public void ejbActivate() {
  }

  public void ejbPassivate() {
  }

  public void setSessionContext(SessionContext sc) {
  }
}


------------------------------------------------------------
.\Compile.bat:

javac -classpath C:\jboss-4.0.5.GA\client\jboss-j2ee.jar com/javapro/ejb/StringProcessor.java
javac -classpath C:\jboss-4.0.5.GA\client\jboss-j2ee.jar;. com/javapro/ejb/StringProcessorHome.java
javac -classpath C:\jboss-4.0.5.GA\client\jboss-j2ee.jar;. com/javapro/ejb/StringProcessorBean.java
javac -classpath C:\jboss-4.0.5.GA\client\jboss-j2ee.jar;C:\jboss-4.0.5.GA\client\jbossall-client.jar;. Client.java

------------------------------------------------------------
.\MakeJar.bat:

jar cfv StringProcessor.jar com/javapro/ejb/*.class META-INF/ejb-jar.xml


Thanks in advance, Nikolaj, Copenhagen


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3985757#3985757

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3985757



More information about the jboss-user mailing list