2

RMI Hello world の例を実行するコマンドを実行しようとしましたが、失敗しました。

私の実行手順はここから取得されます: http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/hello/hello-world.html

コマンドは次のとおりです。

  • javac:正常に動作し、クラスファイルを取得します
  • rmiregistry &:次のようなものが得られます[1] 17122
  • java -Djava.rmi.server.codebase=file:/users/ha/RMI/ example.hello.Server:

エラーメッセージが表示される

スレッド「メイン」での例外 java.lang.NoClassDefFoundError: example/hello/Server 原因:​​ java.lang.ClassNotFoundException: example.hello.Server at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java. security.AccessController.doPrivileged(Native Method) の java.net.URLClassLoader.findClass(URLClassLoader.java:190) の java.lang.ClassLoader.loadClass(ClassLoader.java:306) の sun.misc.Launcher$AppClassLoader.loadClass( Launcher.java:301) で java.lang.ClassLoader.loadClass(ClassLoader.java:247)

4

3 に答える 3

3

新しいターミナルウィンドウで各コマンドを実行することで、この問題を解決しました。まず、.java ファイルの javac から始めて、コマンド rmiregistry & を実行します。

次に、新しいターミナル ウィンドウを開き、Server クラスに対してコマンド java を実行します。

3 番目に、新しいターミナル ウィンドウを開き、Client クラスに対してコマンド java を実行します。

そしてそれは私と一緒に働きます!

于 2012-12-16T21:05:14.967 に答える
0

Mac では、ルート ディレクトリの Users ディレクトリは大文字で表記されます。

あなたが書いた:

ファイル:/ users /ha/RMI/

file:/ Users /ha/RMI/ が正しいでしょう。これは、大文字と小文字を区別しないようにセットアップするように明示的にセットアップされたファイル システムにのみ適用されます (大文字と小文字を区別しません)。少なくとも、以下のコメントはそう言っています。これは自分では確認できません。

クラスパスも多くの状況で必要になります。それはあなたの依存関係に依存します。ただし、Windows でクラスパスが必要な場合は、Mac でも同様のクラスパスが必要になります。

.class ファイルの場所に応じて、呼び出しにクラスパスを追加します。

java -Djava.rmi.server.codebase=file:/users/ha/RMI/ -cp=/Users/ha/RMI example.hello.Server

もちろん、これはクラス ファイルが /Users/ha/RMI/example/hello の下にあることを前提としています。

ディレクトリ内を調べて、クラス ファイルがあることを確認します。javac コマンドと -d 引数の後に指定したディレクトリである必要があります。

于 2012-12-07T10:24:52.507 に答える