2017-04-09 30 views
1

我在使用Windows 10上的命令行界面(不能使用Eclipse或任何其他IDE)編譯包中的Java RMI分配時遇到了一些問題。我需要編譯並運行兩個.java文件 - RemoteBankServer.java和RemoteBankClient.java。這兩個文件都使用其他.java類(Bank.java,RemoteBankImpl.java,RemoteBank.java,Account.java和Account.java的子類)。 以前,我所有的文件,一個文件夾中,我可以很容易地編譯和運行我的服務器和客戶端兩個命令行窗口,具有:Java在多個包中編譯RMI服務器/客戶端應用程序

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.*; 
+0

你用什麼命令編譯? – prasanth

+0

您是否在源文件中包含聲明? – prasanth

+0

@prasanth是的,我在每個源文件中都包含了包聲明(package edu.btp400.w2017.server;(或其中包含的任何文件夾))。還用我的命令編輯了這篇文章。謝謝。 – zzzzz

回答

0
import edu.btp400.w2017.*; 

這並不導入由*指示的子包中的所有類。星號僅指類。

您需要單獨導入所有包。

+0

感謝您的回覆。我把它放在我的.java文件的頂部: 'import edu.btp400.w2017.common。*;' import edu.btp400.w2017.server。*; import edu.btp400.w2017.client。*; 現在,如果我編譯我的RemoteBankServer和RemoteBankClient從包裝(EDU之上的一層文件夾)之外,它編譯和運行就好了。但是,如果我嘗試從edu(或任何子目錄)進行編譯,它不會。這是它應該如何 - 我只能從包裝外面編譯?謝謝。 – zzzzz

相關問題