Почему 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