猿问

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

当我使用 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


慕的地10843
浏览 98回答 3
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 将把这些文件作为一个组一起编译,并自动解决各个源文件中声明之间的任何依赖关系。

郎朗坤

一起编译目录下的所有文件javac 目录名/*.java

开满天机

您只能调用主类,即MyApp只需编译主类javac MyApp.java即可java MyApp
随时随地看视频慕课网APP

相关分类

Java
我要回答