-classPath 有问题,少了 .

解决方案 »

  1.   

    我的代码:
    import java.rmi.RemoteException;import javax.ejb.*;
    import simpleBean.*;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.rmi.PortableRemoteObject;
    public class SalaryClient {
        public static void main(String[] args) 
        {
            try{
                InitialContext ctx = new InitialContext();
                Object objRef = ctx.lookup("Salary");
                SalaryHome home=(SalaryHome)objRef;
                Salary bean = home.create();
                System.out.println("Monthly net salary: "+bean.calculateSalary(28000,2,500.0));
            }catch(NamingException ne)
            {
                System.out.println("Naming Exception caught : "+ne);
            }
            catch(CreateException ce)
            {
                System.out.println("Create Exception caught: "+ce);
            }
            catch(RemoteException re)
            {
                System.out.println("Remote Exception caught: "+re);
            }
            
        }
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package javax.ejb;
    import java.security.Identity;
    import java.security.Principal;
    import java.util.Properties;
    import javax.transaction.UserTransaction;
    /**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface EJBContext {
        public abstract Identity getCallerIdentity();
        public abstract Principal getCallerPrincipal();
        public abstract EJBHome getEJBHome();
        public abstract EJBLocalHome getEJBLocalHome();
        public abstract Properties getEnvironment();
        public abstract boolean getRollbackOnly()throws IllegalStateException;
        public abstract UserTransaction getUserTransaction()throws IllegalStateException;
        public abstract boolean isCallerInRole(String s);
        public abstract boolean isCallerInRole(Identity identity);
        public abstract void setRollbackOnly()throws IllegalStateException;
        public abstract EJBObject getEJBObject() throws IllegalStateException;
        public abstract EJBLocalObject getEJBLocalObject() throws IllegalStateException;
        
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package javax.ejb;import java.rmi.Remote;
    import java.rmi.RemoteException;/**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface EJBHome extends Remote {
        public abstract EJBMetaData getEJBMetaData() throws RemoteException;
        public abstract HomeHandle getHomeHandle() throws RemoteException;
        public abstract void remove(Object obj) throws RemoteException ,RemoveException;
        public abstract void remove(Handle handle) throws RemoteException ,RemoveException;
        
        
        
        
        
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package javax.ejb;/**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface EJBLocalHome {
        public abstract void remove(Object obj) throws RemoveException,EJBException;
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package javax.ejb;/**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface EJBLocalObject {
       public abstract EJBLocalHome getEJBLocalHome() throws EJBException;
       public abstract Object getPrimaryKey() throws EJBException;
       public abstract boolean isIdentical(EJBLocalObject ejblocalobject) throws EJBException;
       public abstract void remove() throws RemoveException ,EJBException;
       
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package javax.ejb;import java.rmi.Remote;
    import java.rmi.RemoteException;
    /**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface EJBObject extends Remote {
        public abstract EJBHome getEJBHome() throws RemoteException;
        public abstract Handle getHandle() throws RemoteException;
        public abstract Object getPrimaryKey()throws RemoteException;
        public abstract boolean isIdentical(EJBObject ejbobject) throws RemoteException;
        public abstract void remove() throws RemoteException ,RemoveException;
    }
      

  2.   

    /*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package simpleBean;import java.rmi.RemoteException;import javax.ejb.EJBObject;/**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface Salary extends EJBObject {
        double calculateSalary(int annualSalary,int pensionContrib,double bonus) throws RemoteException;   
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package simpleBean;
    import java.rmi.RemoteException;import javax.ejb.*;
    /**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public class SalaryEJB implements SessionBean {    /* (非 Javadoc)
         * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
         */
        public void setSessionContext(SessionContext ctx) throws EJBException, RemoteException {
           
            
        }    /* (非 Javadoc)
         * @see javax.ejb.SessionBean#ejbRemove()
         */
        public void ejbRemove() throws EJBException, RemoteException {
            // TODO 自动生成方法存根
            
        }    /* (非 Javadoc)
         * @see javax.ejb.SessionBean#ejbActivate()
         */
        public void ejbActivate() throws EJBException, RemoteException {
            // TODO 自动生成方法存根
            
        }    /* (非 Javadoc)
         * @see javax.ejb.SessionBean#ejbPassivate()
         */
        public void ejbPassivate() throws EJBException, RemoteException {
            // TODO 自动生成方法存根
            
        }
        
        private static double taxRate=28;
        public double calculateSalary(int annualSalary,int pensionContrib,double bonus){
            double monthly=0;
            monthly=annualSalary/12;
            monthly=monthly+bonus;
            monthly=monthly-(monthly*(pensionContrib/1000));
            monthly=monthly-(monthly*(taxRate/100));
            return monthly;
        }
    }/*
     * 创建日期 2005-10-17
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package simpleBean;import java.rmi.RemoteException;import javax.ejb.CreateException;
    import javax.ejb.EJBHome;/**
     * @author w
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface SalaryHome extends EJBHome {
        Salary create() throws RemoteException,CreateException;
        
    }