1

RMIサーバーを実行するために以下のbatファイルを作成しました

@echo Off

set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\bin\;
set classpath=C:\policy.all;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j-1.2.12.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j-1.2.15.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4jProperties.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\bcprov-jdk15-144.jar\bcprov-jdk15-144.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\sevenzipjbinding.zip;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\sevenzipjbinding-AllPlatforms.zip;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\apache-log4j-1.2.17\log4j-1.2.17.jar;




set classpath=%classpath%;.

java -Djava.security.manager -Djava.security.policy=C:\policy.all

java -Xms512m -Xmx1024m ExecutorServer -Djava.rmi.server.codebase=file:C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/RMI_Server/bin/ -Djava.security.policy=C:\policy.all

pause

RMI サーバーを実行できますが、RMI が RMI サーバーに接続しようとすると、次の例外が発生します。

Execption in RMI...java.rmi.UnmarshalException: error unmarshalling return; nest
ed exception is:
        java.lang.ClassNotFoundException: ExecutorInterface (no security manager
: RMI class loader disabled)
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
        java.lang.ClassNotFoundException: ExecutorInterface (no security manager
: RMI class loader disabled)
        at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
        at java.rmi.Naming.lookup(Unknown Source)
        at com.mindcraft.queryExecutor.actionclass.acInsertExecutorDetails.rmiCl
ientCall(acInsertExecutorDetails.java:272)
        at com.mindcraft.queryExecutor.actionclass.acInsertExecutorDetails.execu
te(acInsertExecutorDetails.java:218)

実行中にポリシー ファイルとコード ベースを提供しました。ここで不足しているものを取得できません。rmir​​egistry のパスに lcass を追加するには?

4

2 に答える 2

1
  1. CLASSPATH を 10 個の連続した値に設定しても機能しません。最後の値のみを取ります。=%classpath%; に設定する必要があります。また、名前にスペースが含まれるすべてのディレクトリを引用符で囲む必要があります。
  2. policy.all を CLASSPATH に置くことは無意味です。
  3. java.lang.ClassNotFoundException: ExecutorInterface何が間違っているかを正確に言います。そのクラスはクライアントに存在しません。
于 2012-06-19T06:54:04.990 に答える
0

簡単な解決策は、ExecutorInterface.class またはその関連 jar をクライアント プロジェクトのクラス パスに追加することです。

于 2018-01-19T10:21:02.963 に答える