javac не находит другой скомпилированный класс в текущей папке - PullRequest
0 голосов
/ 31 декабря 2018

Я использую OpenJDK11.У меня есть два файла Java в текущей папке, которые должны работать вместе, чтобы быть приложением JavaFX.Один из них называется Main.java и запускает главное окно.Другой - Alert.java, и он должен запускать альтернативное окно, которое является типом предупреждения.Теперь я выполнил следующую команду:

javac -cp "c:\projects\java\currentProject" --module-path "c:\Program Files\Java\javafx-sdk-11.0.1\lib" --add-modules=javafx.controls,javafx.fxml Alert.java Main.java

В то время как Alert.java компилировался просто отлично, Main.java не смог импортировать класс Alert и выдал ошибку «import Alert».Я попытался "импортировать Alert.Alert" и "import currentProject.Alert", но все равно это не сработало.Кроме того, я объявил пакет «package currentProject» в начале каждого файла, и он все еще выдавал ошибку.

Что я должен сделать, чтобы запустить его?Мне уже не удалось установить JavaFX на все доступные IDE, поэтому я не собираюсь использовать IDE, кроме Atom.Но как мне правильно его скомпилировать?

больше информации -

структура файла:

c-> projects-> java-> economicManager -> (Alert.java, Main.java, financialManager.fxml, alert.fxml, Alert.class, Alert $ Controller.class, Main.class [предварительно скомпилированная версия])

Alert.java:

package financialManager;

import javafx.stage.Stage;
import javafx.stage.Modality;
import javafx.scene.Scene;
import javafx.scene.Parent;

import javafx.scene.control.Button;
import java.util.Map;

public class Alert {

    public Stage stage;
    private Controler_Class controler;

    public Alert(Parent root) {

        Controler_Class clas = new Controler_Class(root);
        this.controler = clas;

        Scene scene = new Scene(root);
        Stage stage = new Stage();

        stage.initModality(Modality.APPLICATION_MODAL);
        stage.setTitle("financial report");
        stage.setScene(scene);

        this.stage = stage;
        stage.showAndWait();
    }

    private class Controler_Class{

        Parent root;

        public Controler_Class(Parent root){

        }
    }
}

Main.java:

package financialManager;

import Alert;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.Parent;

import javafx.scene.control.ListView;
import javafx.scene.control.SplitPane;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;

import java.util.Map;

public class Main extends Application{

    @Override
    public void start(Stage stage) throws Exception{

        final int width = 300;
        final int height = 450;

        stage.setTitle("hello mofos");

        FXMLLoader loader = new FXMLLoader(getClass().getResource("financialManager.fxml"));

        Parent root = loader.load();
        Scene scene = new Scene(root, width, height);

        Map<String, Object> mapper = loader.getNamespace();
        AnchorPane pane = (AnchorPane) mapper.get("splitpane1_anchorpane");

        if(pane != null)
            SplitPane.setResizableWithParent(pane, false);
        else
            System.out.println("it's null you idiot!");

        Button btn = (Button) mapper.get("economicReport");

        btn.setOnMouseClicked((event) -> {

            FXMLLoader loader2 = new FXMLLoader(getClass().getResource("alert.fxml"));
            Parent parent = loader2.load();
            Alert alert = new Alert(parent);
        });

        /*
        ChangeListener<Number> stageSizeListener = (observable, oldValue, newValue) ->
                pane.setDividerPositions(0.20219435736677116);

        stage.widthProperty().addListener(stageSizeListener);
        stage.heightProperty().addListener(stageSizeListener);
        */

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args){

        launch();
    }
}

1 Ответ

0 голосов
/ 02 января 2019

Я вижу, что вы импортируете класс Alert неправильно.Ваш пакет financialManager , поэтому вы должны использовать его в строке импорта следующим образом:

import financialManager.Alert;

Что касается ваших проблем с IDE, я сделал, чтобы JavaFX отлично работал с Eclipse и IntelliJ в OpenJDK 11без каких-либо проблем несколько дней назад - для OpenJDK вам понадобится OpenJFX , а если вам интересно какое-то чтение, это - ссылка из блога Oracle на их планы относительно JavaFX.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...