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

Java在多个包中编译RMI服务器/客户端应用程序,java,command-line,import,packages,javac,Java,Command Line,Import,Packages,Javac,在Windows 10上,我在使用命令行界面(不能使用Eclipse或任何其他IDE)的包中编译Java RMI分配时遇到了一些问题。我需要编译并运行两个.java文件——RemoteBankServer.java和RemoteBankClient.java。这两个文件都使用其他.java类(Bank.java、remotebankinpl.java、RemoteBank.java、Account.java和Account.java的子类)。 以前,由于我的所有文件都在一个文件夹中,我可以通过两

在Windows 10上,我在使用命令行界面(不能使用Eclipse或任何其他IDE)的包中编译Java RMI分配时遇到了一些问题。我需要编译并运行两个.java文件——RemoteBankServer.java和RemoteBankClient.java。这两个文件都使用其他.java类(Bank.java、remotebankinpl.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
还有类似的错误,比如说找不到Account和其他类。我已经阅读了关于如何使用命令行界面使用Java包进行编译的各种文章,但是我还没有让它正常工作。如果有任何帮助,我们将不胜感激。很抱歉,文章太长了

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

javac -cp . edu/btp400/w2017/server/RemoteBankServer.java
javac RemoteBankServer.java
这在服务器文件夹中,并得到15个编译错误:

javac -cp . edu/btp400/w2017/server/RemoteBankServer.java
javac RemoteBankServer.java
编辑:多亏了用户EJP,我发现我需要在导入语句中包含子文件夹:而不仅仅是
import edu.btp400.w2017.*;
我需要做:

import edu.btp400.w2017.common.*;
import edu.btp400.w2017.server.*;
import edu.btp400.w2017.client.*;
这不会导入由
*
指示的子包中的所有类。星号仅指类

您需要单独导入所有包

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


您需要单独导入所有包。

编译时使用了什么命令?源文件中是否包含包声明?@prasanth是的,我包含了包声明(package edu.btp400.w2017.server;(或它所在的任何文件夹))在每个源文件中。也用我的命令编辑了帖子。谢谢。我会在linux.javac-d.-cp.
find-name*.java
中用这样的命令编译。你用什么命令编译?你的源文件中包含了包声明吗?@prasanth是的,我包含了包声明(package edu.btp400.w2017.server;(或它所在的任何文件夹))在每个源文件中。我也用我的命令编辑了帖子。谢谢。我会在linux.javac-d.-cp.
find-name*.java.
中用这样的命令编译。谢谢你的回复。我把这个放在我的.java文件的顶部:“import edu.btp400.w2017.common.*;”import edu.btp400.w2017.server.*;import edu.btp400.w2017.client.*;现在,如果我是从包外部(edu上一级的文件夹)编译我的RemoteBankServer和RemoteBankClient,它可以正常编译和运行,不是。应该是这样的吗?我只能从包外编译?谢谢。谢谢你的回复。我把这个放在我的.java文件的顶部:“import edu.btp400.w2017.common.*;”import edu.btp400.w2017.server.*;import edu.btp400.w2017.client.*;现在,如果我从包外编译我的RemoteBankServer和RemoteBankClient.*软件包(edu上一级的文件夹)编译和运行良好。但如果我尝试从edu(或任何子目录)内部编译,则不会。这就是应该的方式吗?我只能从软件包外部编译?谢谢。