Java 在多个包中编译 RMI 服务器/客户端应用程序



我在Windows 10上使用命令行界面(无法使用Eclipse或任何其他IDE)在包中编译Java RMI赋值时遇到了一些麻烦。我需要编译并运行两个.java文件 - RemoteBankServer.java和RemoteBankClient.java。这两个文件都使用其他.java类(Bank.java,RemoteBankImpl.java,RemoteBank.java,Account.java和Account.java的子类)。 以前,我的所有文件都在一个文件夹中,我可以使用两个命令行窗口轻松编译和运行我的服务器和客户端,包括:

javac RemoteBankServer.java
java RemoteBankServer

对于RemoteBankClient也是如此。 现在我已经测试了我的代码工作正常,我需要按照以下结构将它们组织到 java 包中:

- package name: edu.btp400.w2017.client
class name: RemoteBankClient
- package name: edu.bt400.w2017.server
class names: RemoteBankImpl, RemoteBankServer
- package name: edu.btp400.w2017.common
class name: RemoteBank (and all other classes, like Bank, Account, etc.)

我已经创建了这些文件夹(edu/btp400/w2017/),并在每个文件夹中放置了适当的类,但我无法编译它。现在,我在每个.java文件的顶部都有这两行:

package edu.btp400.w2017.server;   //or .common or .client
import edu.btp400.w2017.*;

但是在尝试编译RemoteBankServer时.java(在服务器文件夹中)时,我仍然遇到编译错误,例如(这很奇怪,因为RemoteBankImpl与RemoteBankServer位于同一文件夹中:

RemoteBankServer.java:40: error: cannot find symbol
RemoteBankImpl b1 = new RemoteBankImpl();
^
symbol:   class RemoteBankImpl
location: class RemoteBankServer

以及类似的错误,指出找不到帐户和其他类。我已经查看了有关如何使用命令行界面使用 Java 包进行编译的各种帖子,但我还没有让它工作。任何帮助将不胜感激。对不起,长帖子。

编辑:这是我在上面用来编译的命令(将文件存储在各种包中之后): 我在包含 edu 的文件夹中尝试了这个,并得到了 27 个编译错误:

javac -cp . edu/btp400/w2017/server/RemoteBankServer.java

这在服务器文件夹中,并得到了 15 个编译错误:

javac RemoteBankServer.java

编辑:感谢用户EJP,我发现我需要在我的导入语句中包含子文件夹:而不仅仅是我需要做的import edu.btp400.w2017.*;

import edu.btp400.w2017.common.*;
import edu.btp400.w2017.server.*;
import edu.btp400.w2017.client.*;
import edu.btp400.w2017.*;

这不会导入*指示的子包中的所有类。星号仅指类。

您需要单独导入所有包。

最新更新