По вашей ошибке: "не удается разрешить символ 'Main'"
Это сообщение об ошибке само по себе не требует пояснений.Компилятор не может понять, что такое "Main".
Первое, что вы ошиблись, это:
public class Main extends Application {
public Stage window = new Stage();
Если вы хотите получить доступ к свойству окна через "Main.window"вам нужно сделать его статическим.
public class Main extends Application {
public static Stage window;
И в начале вы также должны изменить (последовательный / непротиворечивый) «this.window» на «Main.window»:
public void start(Stage primaryStage){
//this.window = primaryStage;
Main.window = primaryStage;
Во-вторых, компилятору не сказали, что такое Main.Обычно это недостающий импорт.Поэтому вам нужно добавить оператор импорта в Presenter в самом начале после имени пакета.
package view.presenter;
import package.Main;
Но пусть ваша IDE поможет вам - всем основным IDE (Eclipse, Intellij, Netbeans...) предложит импортировать пакет, если таковой имеется.
И да, для этого вам нужен пакет для Main.Неважно, как вы это называете - вам нужен пакет.См. Также: Как получить доступ к java-классам в пакете по умолчанию? и Как импортировать класс из пакета по умолчанию
Как это Main, и я предполагаюВы должны отделить «view» от Main. Я бы рекомендовал создать «main» пакет (возможно, лучше использовать имя проекта) и подпакет «main.view» для вашего Presenter.При этом вы получите структуру каталогов, подобную этой:
main+
+- view +
| +- Presenter.java
|
+-Main.java
Но ... Этот импорт необходим, только если классы находятся в разных пакетах.Поэтому, если вы поместите оба класса в «представление», вам не понадобится импорт.
FWIW:
Вы также можете получить сообщение об ошибке, если ваш файл имеет неправильное имя.Он должен называться Main.java ".
Если Main не может быть скомпилирован для других ошибок в нем, это также может привести к проблеме.