У меня следующая структура проекта:
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
, который, к сожалению, вызывает ту же ошибку.
Мой вердикт заключается в том, что эта проблема вызвана расположениемфайлов .class в package2, которые компилятор не может обрабатывать должным образом, но я не уверен, как изменить структуру моего проекта.