当我使用javac编写几个.java文件时,我得到了一些;“重复类”;错误,但我可以';在我的代码中找不到错误
当我使用javac编写几个.java文件时,我得到了一些“重复类”错误,但我在代码中找不到错误 有四个.java文件,所有这些文件都在Windows中的同一文件夹中当我使用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); 圈。说(); 工人=新工人(); 工人。说
导入dx.*;
导入dx.shapes.*;
类MyApp{
公共静态void main(字符串[]args){
System.out.println(“这是一个测试应用程序”);
矩形rect=新矩形(10,20);
直说();
圆圈=新圆圈(15);
圈。说();
工人=新工人();
工人。说();
}
}
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);
}
}
package dx.shapes;
公共阶级圈子{
私有整数x,y;
私有整数半径;
公众圈(){
这(0,0,10);
}
公共圈(整数半径){
这个(0,0,半径);
}
公共圆(整数x,整数y,整数半径){
这个.x=x;
这个。y=y;
这个半径=半径;
}
公开演讲{
System.out.println(“我是一个圆,半径:“+this.radius”);
}
}
包装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将把这些文件作为一个组一起编译,并将自动解决各种源文件中声明之间的任何依赖关系
非常感谢你准确而精彩的回答。祝你工作和生活愉快。