无法实例化类:com.sun.enterprise.naming.SerialInitContextFactory

时间:2016-09-30 08:47:23

标签: java java-ee jndi

我在Netbeans中创建了一个简单的企业应用程序,它在Netbeans中按预期工作。企业应用程序客户端包含以下代码:

package clienttest2;

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import test.TestEJBRemote;

/**
 *
 * @author 
 */
public class Main {
private TestEJBRemote testejb;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws NamingException {
        Properties props = new Properties();  
        props = new Properties();
        props.setProperty("java.naming.factory.initial",
            "com.sun.enterprise.naming.SerialInitContextFactory");
        props.setProperty("java.naming.factory.url.pkgs",
            "com.sun.enterprise.naming");
        props.setProperty("java.naming.factory.state",
            "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
        props.setProperty("org.omg.CORBA.ORBInitialHost", "computer");
        props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
        InitialContext ctx = new InitialContext(props);
        TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB");
        System.out.println(t.getName("Ian"));

        //Context ctx = null;
        //ctx=new InitialContext();
        //TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB");
        //System.out.println(t.getName("Ian"));
    }

}

我尝试了以下内容:

java -jar ClientTest.jar

我得到的错误是:无法实例化类:com.sun.enterprise.naming.SerialInitContextFactory

我有几个问题:

我的电脑上安装了JRE 1.8。这是否意味着我可以运行所有类型的Java应用程序,即Java EE和Java SE?

2 个答案:

答案 0 :(得分:1)

简单来说:您的代码包含一系列将使用反射加载的类名。惊喜:所有都需要在你的类路径中。

最有可能的是,您的Netbeans项目设置列出了所有必需的JAR(可能属于Java安装附带的JAR集合)。

但是当您在命令行上调用java时,您或多或少会从仅包含“核心”Java JAR的类路径开始。

换句话说:您必须识别包含代码列出的类的JAR;然后,在命令行上调用java时,必须在“类路径设置”中提供它们。

答案 1 :(得分:0)

可能是重复的How to setup JNDI for Glassfish 3.1.2 for a stand-alone client?

我们可以假设Glassfish和NetBean共享Java EE的一些库。

无论如何,您可以使用http://jarscan.com扫描您的netbean目录,找到包含您需要的类的jar。并将其添加到java命令行。