當我使用 javac 編譯多個.java文件時,出現一些“重復類”錯誤,但我在代碼中找不到錯誤。有四個.java文件,所有這些文件都位于 Windows 中的同一文件夾中。MyApp.java文件中的代碼:import dx.*;import dx.shapes.*;class MyApp { public static void main(String[] args) { System.out.println("This is a test application."); Rectangle rect = new Rectangle(10, 20); rect.Speak(); Circle circle = new Circle(15); circle.Speak(); Worker worker = new Worker(); worker.Speak(); }}Rectangle.java文件中的代碼: package dx.shapes; public class Rectangle { private int x, y; private int width, height; public Rectangle() { this(0, 0, 1, 1); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } public void Speak(){ System.out.println("I'm a rectangle, width:" + this.width + ", height:" + this.height); } }Circle.java文件中的代碼:package dx.shapes;public class Circle { private int x, y; private int radius; public Circle() { this(0, 0, 10); } public Circle(int radius) { this(0, 0, radius); } public Circle(int x, int y, int radius) { this.x = x; this.y = y; this.radius = radius; } public void Speak(){ System.out.println("I'm a circle, radius:" + this.radius); }}Worker.java文件中的代碼:package dx;public class Worker { public void Speak(){ System.out.println("I'm a worker."); }}在Windows命令行中,我使用javac來編譯這些源代碼:javac MyApp.java Rectangle.java Circle.java Worker.java
3 回答

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
主要是:
當類和接口被組織成一個包時,該包被表示為一個目錄,并且任何子包都被表示為子目錄。
假設您的根源目錄是src
,文件應排列為
src/ ?| ?+?-?MyApp.java ?| ?+?=?dx/? ??????| ??????+?-?Worker.java ??????| ??????+?=?shapes/ ????????????| ????????????+?-?Circle.java ????????????+?-?Rectangle.java
要編譯更改目錄src
并使用:
/src>?javac?*.java?dx/*.java?dx/shapes/*java
或者,對于 Windows:
C:\src>javac?*.java?dx\*.java?dx\shapes\*java
由于所有類都在 中引用MyApp
,因此您只需編譯該文件,編譯器就會找到并編譯其他類:
src>?javac?MyApp.java
最好一次編譯所有文件,因為(相同的文檔):
在命令行或參數文件中指定的源文件的順序并不重要。javac 將把這些文件作為一個組一起編譯,并自動解決各個源文件中聲明之間的任何依賴關系。
添加回答
舉報
0/150
提交
取消