2016-09-30 206 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

相關問題