我具有以下项目结构:
MyProject
+-Main.java
+-package1
+-ClassA.java
+-package2
+-ClassB.java
+-ClassC.java
在javac *.java
文件夹中使用MyProject
进行编译后,.class文件将在相应.java文件所在的文件夹中创建。
这是我的Main.java文件的概述:
import package1.*;
import package1.package2.*;
class Main {
public static void main(String[] args) {
ClassB test = new ClassB();
}
}
这是我在编译时遇到的错误:
Main.java:15: error: cannot access ClassB
ClassB test = new ClassB();
^
bad class file: ./package1/package2/ClassB.class
class file contains wrong class: package2.ClassB
Please remove or make sure it appears in the correct subdirectory of the classpath.
我已确保程序包结构与文件夹匹配。
此外,我尝试使用手动编译项目
javac -cp package1/package2 package1/package2/*.java
javac -cp package1 package1/*.java
javac -cp . Main.java
不幸的是,它会产生相同的错误。
我的判断是此问题是由package2中.class文件的位置引起的,编译器似乎无法正确处理该文件,但我不确定如何修改我的项目结构。