Я гуглил и искал лучшее, что мог, но все равно не мог найти решение.Возможно, мои поисковые запросы были неправильными или подробными.
Я знаю, что есть ряд изменений API с java 8 на 10. Структура jdk для 8-10 также имеет значительные изменения.
Проблема:
У меня есть следующие зависимости:
Проект A -> Проект B -> Проект C
Некоторые классы в проекте A будут вызывать классы в проектах B, а B будетвызов C. В Java 8 проблем не было.
После обновления до Java 10 возникает исключение NoClassDefFoundError.
Я нашел два пути решения проблемы
Проект A теперь также зависит от проекта C
На вкладке «Путь сборки Java» -> вкладка «Порядок и экспорт» поставлен флажок «Проект C».
Вопрос
Есть лилучший способ решить мою проблему вместо того, чтобы использовать решения, которые я нашел?Поскольку мои коды проекта огромны, и это займет много времени.
Я также хотел бы узнать причину проблемы, если это возможно.
Код:
ClassA.java (проект A):
package pkg;
public class ClassA {
public ClassA() {
new ClassB();
}
public static void main(String[] args) {
new ClassA();
}
}
ClassB.java (проект B)
package pkg;
public class ClassB {
public ClassB() {
callClassC();
}
public void callClassC() {
ClassC classC = new ClassC();
String info = classC.getInfo();
System.out.println(info);
}
}
ClassC.Java (Project C)
package pkg;
public class ClassC {
public String getInfo() {
return "Class c info";
}
}
Я также экспортировал рабочее пространство Eclipse для моей проблемы.Я создал это рабочее пространство, используя более старую версию eclipse и java.