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

时间:2017-04-09 16:17:57

标签: java command-line import packages javac

我在使用Windows 10上的命令行界面编译Java RMI分配时遇到了一些麻烦(无法使用Eclipse或任何其他IDE)。我需要编译并运行两个.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语句中包含子文件夹:而不仅仅是import edu.btp400.w2017.*;我需要做的事情:

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

1 个答案:

答案 0 :(得分:0)

import edu.btp400.w2017.*;

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

您需要单独导入所有包。