#java #compiler-errors #package
#java #ошибки компилятора #пакет
Вопрос:
У меня следующая структура проекта:
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, с которыми компилятор, похоже, не может справиться должным образом, но я не уверен, как изменить структуру моего проекта.
Комментарии:
1. Можете ли вы показать свой
ClassB.java
? Содержит ли онpackage package1.package2;
объявление?2. На самом деле он просто содержал
package package2;
, что, по-видимому, было проблемой. Спасибо, что сэкономили мое время 🙂3. Нет проблем, рад, что это было так 🙂