为了账号安全,请及时绑定邮箱和手机立即绑定

当我使用 javac 编译多个 .java 文件时,出现一些“重复类”错误,但我在代码中找不到错误

当我使用 javac 编译多个 .java 文件时,出现一些“重复类”错误,但我在代码中找不到错误

慕的地10843 2024-01-17 16:45:04
当我使用 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 将把这些文件作为一个组一起编译,并自动解决各个源文件中声明之间的任何依赖关系。


查看完整回答
反对 回复 2024-01-17
?
郎朗坤

TA贡献1921条经验 获得超9个赞

一起编译目录下的所有文件

javac 目录名/*.java


查看完整回答
反对 回复 2024-01-17
?
开满天机

TA贡献1786条经验 获得超12个赞

您只能调用主类,即MyApp只需编译主类javac MyApp.java即可java MyApp



查看完整回答
反对 回复 2024-01-17
  • 3 回答
  • 0 关注
  • 42 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信