0

ジャバ初心者。コマンドラインからJavaメインクラスを実行しようとしていますが、戻ってきますClassNotFoundException:

java -cp class c:\development\eclipse\workspace\Library-Manager-Server\bin\demo\rmi\librarymanager\server\LibraryManagerServer 

-Djava.security.policy="C:\Development\Eclipse\Workspace\Library-Manager-Server\security.policy" 

-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin/ file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin/"

クラスは間違いなくビン (Eclipse がドロップする場所) にありますが、何らかの理由 (おそらく些細なこと) で、上記の cmd 行を実行しても見つかりません。

どんな助けでも大歓迎です!

編集#1:クラス名がdemo.rmi.librarymanager.server.LibraryManagerServer

編集#2:OK - 人々の提案のおかげで、今回は構文が正しいと思いますが、まだ取得ClassNotFoundExceptionしていますが、共通パッケージの別のクラスです:

demo.rmi.librarymanager.common.Library

新しいコマンドラインは次のとおりです。

java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin demo.rmi.librarymanager.server.LibraryManagerServer 

-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy" 

-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin"

コマンドライン引数として -cp の後にc:/development/eclipse/workspace/Library-Manager-Common/binパス (どこにdemo.rmi.librarymanager.common.Library住んでいるか)を追加しますか?c:/development/eclipse/workspace/Library-Manager-Server/bin

みんなの助けと忍耐に感謝します-私はRMIアプリケーションに取り組んでおり、RMIプラグインを使用してEclipse内で作業するまではすべて順調でしたが、Javaにかなり慣れていないため、今は少し苦労しています(あなたは私の質問からわかります!)。

編集#3:わかりました動作しました:

java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin;c:/development/eclipse/workspace/Library-Manager-Common/bin 

demo.rmi.librarymanager.server.LibraryManagerServer 

-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy" 

-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin"

謙虚さのシャワーをしてくれたみんなに感謝します。

4

3 に答える 3

3

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

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A ; separated list of directories, JAR archives,
                  and ZIP archives to search for class files.

私はあなたの問題を見ていると思います-「クラス」はキーワードではありません。置き換える必要があるのは完全修飾クラス名です。

クラスファイルがbinにある場合、コマンドは次のようになります。

java -cp bin myClass

おそらく

java -cp bin demo.rmi.librarymanager.server.LibraryManagerServer

Eclipseプロジェクトのディレクトリにいる場合。

Eclipseには、クラスの場所に関する設定(オーバーライドできます)があることに注意してください。Eclipseのバージョンが異なれば、デフォルトでもバージョンが異なることがわかりました。だから私は見 binた、 classesまたは(私はmavenを使用しているので)target/classes

于 2009-12-27T23:20:13.127 に答える
2

これはおそらく機能します:

java -cp c:\development\eclipse\workspace\Library-Manager-Server\bin\ demo.rmi.librarymanager.server.LibraryManagerServer 

LibraryManagerServerこれは、パッケージ内のクラスを実行することを前提としていますdemo.rmi.librarymanager.server

パッケージでクラスを使用する場合(短いテストまたは学習コードを除いて推奨されます)、次のことを行う必要があることに注意してください。

  • クラスの完全修飾名(パッケージを含む)を使用して、開始するクラスをjava.exeに指示します
  • パッケージ階層に対応するディレクトリ階層が存在するベースディレクトリをクラスパスとして指定します
于 2009-12-27T23:21:07.930 に答える
1

あなたのコマンドラインから私は推測します:

java -cp c:/development/eclipse/workspace/Library-Manager-Server/bin
-Djava.security.policy="C:/Development/Eclipse/Workspace/Library-Manager-Server/security.policy" 
-Djava.rmi.server.codebase="file:/C:/Development/Eclipse/Workspace/Library-Manager-Server/bin/ file:/C:/Development/Eclipse/Workspace/Library-Manager-Common/bin/"
demo.rmi.librarymanager.server.LibraryManagerServer 

Javaパスは/を区切り文字として使用します。未亡人の場合でも、クラスパスはパッケージ階層のルートを指している必要があり、実行するクラスはクラスパスに関連するパッケージ表記で指定されます。

于 2009-12-27T23:26:28.610 に答える