找不到符号:编译java代码时

时间:2011-01-22 18:46:28

标签: java

我正在编写一些Java类来实现RMI。我写了所有的课程,程序运行正常。但是从第二天起,我收到编译错误,表明没有文件:

文件名: 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 final&gt; javac ServerMain.java
  ServerImplement.java:4:找不到符号
  symbol: class ServerInterface
  public class ServerImplement extends UnicastRemoteObject implements ServerInterface
  ^
  1 error

该计划甚至在我的大学实验室工作正常。我应该重新安装JDK吗?或者有没有办法明确提供链接?

2 个答案:

答案 0 :(得分:4)

听起来你没有“。”在类路径上。尝试像这样运行它:

java -classpath . ServerMain

看一下你的CLASSPATH环境变量,看看是否会妨碍 - 这些天我通常觉得最简单的就是没有一个,说实话。

答案 1 :(得分:0)

编译java代码时没有链接。 编译器仍然需要查找正在编译的代码引用的所有类。 如果你不使用包,请确保在.java所在的同一目录中运行javac。一个javac * .java应该能够解决你的问题。