Почему javafxpackager не может загрузить основной класс?

У меня глупый вопрос, так как я искал здесь данные, но не смог найти ответ. Я новичок в javaFX и все такое... пожалуйста, помогите мне!.

Вот код, который я использовал. Это пример кода, хотя.

package helloworld;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorld extends Application {
    public static void main(String[] args) {
        launch(args);
    }


    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();

    }

}

После компиляции из каталога. \ Helloworld, используя javac HelloWorld.javaЯ запускаю следующую команду:

PS D:\documents\javafx\helloworld> javafxpackager -createjar -appclass HelloWorld -srcdir . -outdir out -outfile hello.jar -v

Но потом, когда я cd в out и беги java -jar hello.jar Я получаю это:

PS D:\documents\javafx\helloworld\out> java -jar hello.jar Error: Could not find or load main class HelloWorld

Что случилось или я сделал что-то не так?

Любое предложение / объяснение действительно приветствуется.

Спасибо всем.

Zestos.

1 ответ

Решение

Ваш класс приложения находится в пакете helloworld, поэтому для ссылки на него вы должны использовать полное имя helloworld.HelloWorld.

Вот полный пример, использующий пример приложения HelloWorld из вашего вопроса. Я попробовал это на OS X 10.8 с установленной Oracle Java 8u25, и это сработало для меня.

$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

$ javac -version
javac 1.8.0_25

$ tree 
.
├── classes
└── src
    └── helloworld
        └── HelloWorld.java

3 directories, 1 file

$ javac -d classes src/helloworld/HelloWorld.java

$ tree
.
├── classes
│   └── helloworld
│       ├── HelloWorld$1.class
│       └── HelloWorld.class
└── src
    └── helloworld
        └── HelloWorld.java

4 directories, 3 files

$/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javapackager -createjar -appclass helloworld.HelloWorld -srcdir classes -outdir dist -outfile hello.jar -v

$ tree
.
├── classes
│   └── helloworld
│       ├── HelloWorld$1.class
│       └── HelloWorld.class
├── dist
│   └── hello.jar
└── src
    └── helloworld
        └── HelloWorld.java

5 directories, 4 files

$ java -jar dist/hello.jar 
Другие вопросы по тегам