2016-09-30 385 views
2

我在Netbeans中创建了一个简单的企业应用程序,它在Netbeans中按预期工作。企业应用程序客户端包含以下代码:无法实例化类:com.sun.enterprise.naming.SerialInitContextFactory

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?

+0

glassfish的appclient命令可能为您解决这些依赖关系。 – Thufir

回答

0

简而言之:您的代码包含了很多类名的列表,这些类名将全部使用反射来加载。惊喜:所有的都需要在你的classpath中。

很可能,您的Netbeans项目设置会列出所有必需的JAR(可能属于Java安装附带的一组JAR)。

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

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

+0

JRE是否包含运行Java SE和Java EE应用程序所需的一切内容?谢谢。对于类路径引用+1。 – w0051977

相关问题