Netbeans JavaFx Не могу выбрать основной класс

Когда я пытаюсь запустить свой код в NetBeans, я получаю пустое окно с надписью «Просмотреть классы приложений JavaFX», но нет ни одного выбора. Как я могу это решить? Я пытаюсь создать карточную игру. Это начало основного метода.

import cardutils.Deck;
public class Main {

    public static void main(String[] args) {         
            Deck deck = new Deck();
            System.out.println(deck.toString());
    }
}

person Tobias Haraldsson    schedule 26.01.2019    source источник
comment
Можете ли вы показать нам минимально воспроизводимый пример?   -  person LuminousNutria    schedule 27.01.2019
comment
Что ты имеешь в виду? Ни один из моих проектов не запустится :(   -  person Tobias Haraldsson    schedule 27.01.2019
comment
Им не нужно бегать. Вот почему вы публикуете их, чтобы мы могли помочь вам запустить их.   -  person LuminousNutria    schedule 27.01.2019
comment
Попробуйте очистить и построить (shift-F6), запустить файл (shift-F11) или запустить из командной строки,   -  person trashgod    schedule 27.01.2019
comment
Когда я пытаюсь создать его, появляется пустое окно, в котором написано «Доступные классы». Список пуст.   -  person Tobias Haraldsson    schedule 27.01.2019


Ответы (3)


Если вы хотите создать приложение JavaFX, вам нужно создать класс, который расширяет класс Application JavaFX и который также содержит ваш основной метод. Что-то вроде этого:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class Deck extends Application {

   public static void main(String[] args) {
      Application.launch(args);
   }


   @Override
   public void start(Stage stage) {
      Group root = new Group(new Label("Hello JavaFX!"));
      Scene scene = new Scene(root, 1024, 786);
      stage.setScene(scene);
      stage.show();
   }
}

А затем просто запустите проект, и Netbeans найдет этот класс, потому что он содержит основной метод и позволит вам его выбрать.

Однако, если этому проекту на самом деле не нужен JavaFX (мне просто интересно, потому что вы просто печатаете что-то в командной строке), возможно, вы выбрали неправильный тип проекта при создании проекта Netbeans (проект JavaFX вместо обычного проекта Java). ). В этом случае создайте новый стандартный проект Java и скопируйте код из старого проекта.

EDIT: список с «доступными классами» пуст, потому что Netbeans не может найти какие-либо классы, которые расширяют javafx.application.Application внутри проекта JavaFX, который вы, похоже, создали.

person Ignatiamus    schedule 27.01.2019
comment
У меня это как javaFx, потому что я использую github с партнером. Я пробовал сбрасывать кеш. - person Tobias Haraldsson; 27.01.2019
comment
Какая разница? - person Tobias Haraldsson; 27.01.2019
comment
Проще говоря: если вы хотите или должны использовать JavaFX, используйте класс, аналогичный тому, который я разместил выше, чтобы позволить Netbeans найти (Доступные классы) и запустить ваше приложение JavaFX. Если вы не хотите или не нуждаетесь в JavaFX, просто создайте обычный проект в Netbeans, и он распознает класс с обычным методом main() как исполняемый класс и позволит вам запустить его. - person Ignatiamus; 27.01.2019
comment
@TobiasHaraldsson Обратите внимание, что на самом деле вам не нужен метод main() или метод Application.launch(). Его код будет нормально работать и без них. - person LuminousNutria; 29.01.2019
comment
@LuminousNutria Да, его код скомпилируется, но ничего не сделает без основного метода :-) - person Ignatiamus; 29.01.2019
comment
Я бы действительно предложил обновить вашу версию JavaFX. - person LuminousNutria; 30.01.2019

У меня такая же проблема. Возможно, вам потребуется явно указать путь к исходному каталогу. Я исправил эту проблему, явно указав исходный каталог. Файл -> Свойства проекта -> Добавить папку -> Просмотрите каталог src. Постройте его и снова запустите. Я мог запустить приложение.

person Heng Hong-Zhong    schedule 22.06.2020

У меня была аналогичная проблема, и они, похоже, вызваны остаточными файлами в папке проекта. Я стер папку и все, что в ней, и воссоздал новый проект. Это решило проблему.

person Kibonge Murphy    schedule 18.06.2019