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

エンタープライズアプリケーションクライアントは、次のコードが含まれています

私はいくつか質問があります:

私は自分のPCにJRE 1.8をインストールしています。つまり、Java EEとJava SEのすべてのタイプのJavaアプリケーションを実行できますか?

+0

glassfishのappclientコマンドは、これらの依存関係を解決する可能性があります。 – Thufir

答えて

0

あなたのコードには、すべてリフレクションを使用して読み込まれるクラス名のかなりのリストが含まれています。サプライズ:すべてがクラスパスに入る必要があります。

ほとんどの場合、Netbeansプロジェクトのセットアップでは、必要なJARがすべてリストされています(おそらく、Javaインストールに付属する一連のJARに属しているため)。

しかし、コマンドラインでjavaを呼び出すと、「コア」Java JARだけを含むクラスパスから多かれ少なかれ起動します。

つまり、コードリストのクラスを含むJARを特定する必要があります。コマンドラインでjavaを呼び出すときは、 "class path setup"内でそれらを提供しなければなりません。

+0

JREにはJava SEおよびJava EEアプリケーションの実行に必要なものがすべて含まれていますか?ありがとう。クラスパス参照の場合+1。 – w0051977

0

たぶん重複How to setup JNDI for Glassfish 3.1.2 for a stand-alone client?

我々はGlassfishのとNetBeanは、Java EEのためのいくつかのLIBSを共有することを想定することができます。

とにかく、http://jarscan.comを使用すると、必要なクラスが含まれているjarを見つけるためにnetbeanディレクトリをスキャンできます。そしてそれをあなたのjavaコマンドラインに追加してください。

関連する問題