Java classpath: неверный файл класса: содержит неправильный класс - PullRequest
0 голосов
/ 22 апреля 2019

У меня следующая структура проекта:

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, которые компилятор не может обрабатывать должным образом, но я не уверен, как изменить структуру моего проекта.

...