2011-01-22 1 views
1

私はRMIを実装するためにいくつかのJavaクラスを書いています。私はすべてのクラスを書き、プログラムはうまくいきました。シンボルを見つけることができません:Javaコードをコンパイルするとき

ファイル名:ServerInterface.java

import java.rmi.*; 

public interface ServerInterface extends Remote 
{ 
    public double sum(double[] temp) throws RemoteException; 
}; 

ファイル名:ServerImplement.java

import java.rmi.*; 
import java.rmi.server.*; 

public class ServerImplement extends UnicastRemoteObject implements ServerInterface 
{ 

public ServerImplement() throws RemoteException 
{ 
} 

public double sum(double[] temp) throws RemoteException 
{ 
    double sum=0; 
    int len=temp.length; 
    for(int i=0;i<len;i++) 
    sum+=temp[i]; 

    return sum; 
} 
}; 
しかし、私はコンパイラエラーを取得しています非常に次の日からのファイルの存在しないことを示します

ファイル名エラーではないことを証明する:

F:\E\java\rmi final>dir 
Volume in drive F is My Volume 
Volume Serial Number is E0F9-4F89 

Directory of F:\E\java\rmi final 

22-01-2011 23:23 <DIR>   . 
22-01-2011 23:23 <DIR>   .. 
22-12-2009 13:09    1,849 additionImplementer_Stub.class 
21-01-2011 21:52    1,076 Client.class 
18-01-2011 02:54    649 Client.java 
21-01-2011 21:52    1,847 ClientTry.class 
18-01-2011 02:54    1,268 ClientTry.java 
21-01-2011 21:52    444 ServerImplement.class 
18-01-2011 02:30    386 ServerImplement.java 
18-01-2011 02:54    1,783 ServerImplement_Stub.class 
21-01-2011 21:54    209 ServerInterface.class 
22-12-2009 12:07    132 ServerInterface.java 
21-01-2011 21:52    919 ServerMain.class 
18-01-2011 02:36    409 ServerMain.java 
      12 File(s)   10,971 bytes 

私がしようとした場合:javac *.javaを、それが正常に動作します(ただし、.classファイルのいずれかの上でJavaをしようとするとエラーにつながる:Exception in thread "main" java.lang.NoClassDefFoundError: ServerMain

私はjavac ServerImplement.javaをしようとした場合、私は私のJavaプログラムの事実なしである(エラーが出ます)にリンクすることができ: (私は同じディレクトリにしています)

E:\ Javaの\のRMI最終>のjavac ServerMain.java
ServerImplement.java:4:シンボル
symbol: class ServerInterface
を見つけることができませんpublic class ServerImplement extends UnicastRemoteObject implements ServerInterface
^
1 error

プログラムも、私の大学の研究室で正常に動作しています。 JDKを再インストールする必要がありますか?あるいは明示的にリンクを提供する方法はありますか?

+0

クリーンで再構築してください。 – BoltClock

+1

コマンドプロンプトでそれを行うにはどうすればいいですか? – letsc

答えて

4

「」のような音はありません。クラスパス上にある。このようにそれを実行しよう:

java -classpath . ServerMain 

はそれが邪魔になってきたかどうかを確認するためにCLASSPATH環境変数を見てください - 私は通常、正直に言うと、それは1を持っていないのが最も簡単です見つけ、これらの日。

+0

私は自分の環境変数を設定しています:CLASSPATH = "c:/...../ bin"これを行う必要はありますか? – letsc

+0

はい。また、それらのクラスを持つフォルダに現在座っているコマンドプロンプトにいることを確認します(実際には 'package'宣言がないと仮定しますが、それはとにかく貧弱な方法ですが、それは別です)。 – BalusC

+0

nこれはどういう意味ですか?? -/ – letsc

0

Javaコードのコンパイル時にリンクがありません。 コンパイラは、コンパイルされるコードによって参照されるすべてのクラスを見つける必要があります。 パッケージを使用しない場合は、.javaが入っているのと同じディレクトリでjavacを実行してください。javac * .javaは問題を解決できるはずです。

関連する問題