Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我使用javac编写几个.java文件时,我得到了一些;“重复类”;错误,但我可以';在我的代码中找不到错误_Java_Javac - Fatal编程技术网

当我使用javac编写几个.java文件时,我得到了一些;“重复类”;错误,但我可以';在我的代码中找不到错误

当我使用javac编写几个.java文件时,我得到了一些;“重复类”;错误,但我可以';在我的代码中找不到错误,java,javac,Java,Javac,当我使用javac编写几个.java文件时,我得到了一些“重复类”错误,但我在代码中找不到错误 有四个.java文件,所有这些文件都在Windows中的同一文件夹中 MyApp.java文件中的代码: 导入dx.*; 导入dx.shapes.*; 类MyApp{ 公共静态void main(字符串[]args){ System.out.println(“这是一个测试应用程序”); 矩形rect=新矩形(10,20); 直说(); 圆圈=新圆圈(15); 圈。说(); 工人=新工人(); 工人。说

当我使用javac编写几个.java文件时,我得到了一些“重复类”错误,但我在代码中找不到错误

有四个.java文件,所有这些文件都在Windows中的同一文件夹中

  • MyApp.java文件中的代码:
  • 导入dx.*;
    导入dx.shapes.*;
    类MyApp{
    公共静态void main(字符串[]args){
    System.out.println(“这是一个测试应用程序”);
    矩形rect=新矩形(10,20);
    直说();
    圆圈=新圆圈(15);
    圈。说();
    工人=新工人();
    工人。说();
    }
    }
    
  • Rectangle.java文件中编码:
  • package dx.shapes;
    公共类矩形{
    私有整数x,y;
    私人int宽度、高度;
    公共矩形(){
    这(0,0,1,1);
    }
    公共矩形(整数宽度、整数高度){
    这(0,0,宽度,高度);
    }
    公共矩形(整数x,整数y,整数宽度,整数高度){
    这个.x=x;
    这个。y=y;
    这个。宽度=宽度;
    高度=高度;
    }
    公开演讲{
    System.out.println(“我是一个矩形,宽度:+this.width+”,高度:+this.height);
    }
    }
    
  • Circle.java文件中的代码:
  • package dx.shapes;
    公共阶级圈子{
    私有整数x,y;
    私有整数半径;
    公众圈(){
    这(0,0,10);
    }
    公共圈(整数半径){
    这个(0,0,半径);
    }
    公共圆(整数x,整数y,整数半径){
    这个.x=x;
    这个。y=y;
    这个半径=半径;
    }
    公开演讲{
    System.out.println(“我是一个圆,半径:“+this.radius”);
    }
    }
    
  • Worker.java文件中的代码:
  • 包装dx;
    公社工人{
    公开演讲{
    System.out.println(“我是工人”);
    }
    }
    
    在Windows命令行中,我使用javac编译以下源代码:

    javac MyApp.java Rectangle.java Circle.java Worker.java
    
    但我得到的只是一张错误列表:

    Rectangle.java:3: error: duplicate class: dx.shapes.Rectangle
    public class Rectangle {
           ^
    MyApp.java:8: error: cannot access Rectangle
            Rectangle rect = new Rectangle(10, 20);
            ^
      bad source file: .\Rectangle.java
        file does not contain class Rectangle
        Please remove or make sure it appears in the correct subdirectory of the sourcepath.
    Circle.java:3: error: duplicate class: dx.shapes.Circle
    public class Circle {
           ^
    MyApp.java:11: error: cannot access Circle
            Circle circle = new Circle(15);
            ^
      bad source file: .\Circle.java
        file does not contain class Circle
        Please remove or make sure it appears in the correct subdirectory of the sourcepath.
    Worker.java:3: error: duplicate class: dx.Worker
    public class Worker {
           ^
    MyApp.java:14: error: cannot access Worker
            Worker worker = new Worker();
            ^
      bad source file: .\Worker.java
        file does not contain class Worker
        Please remove or make sure it appears in the correct subdirectory of the sourcepath.
    6 errors
    

    我不知道怎么了。为什么?

    将目录中的所有文件一起编译

    javac dir_name/*.java


    您只能调用主类ie
    MyApp
    只需将主类
    javac MyApp.java
    合并,然后
    java MyApp
    请参阅编译器文档:

    主要是:

    当类和接口被组织到一个包中时,包被表示为一个目录,任何子包都被表示为子目录

    假设您的根源目录是
    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将把这些文件作为一个组一起编译,并将自动解决各种源文件中声明之间的任何依赖关系


    非常感谢你准确而精彩的回答。祝你工作和生活愉快。