Ich bin zusammen mit dem Lernprogramm um oracle und bekomme diese Fehlermeldung, wenn ich versuche, die JAR-Datei Ausgabe nach dem kompilierten Code auszuführen.JavaFX und Kompilieren der HelloWorld mit Ant
Error: Could not find or load main class HelloWorld
Zur Einrichtung einer Java-Entwicklungsumgebung, ging ich zum Orakel und heruntergeladen ihre Java SE Development Kit und ließ ihn in /usr/lib/jvm/jdk1.8.0_45
und zeigte dann in der Datei build.xml, um es wie angegeben wurde.
Im folgenden das Tutorial habe ich einen Projektordner mit dem folgenden Code/script:
(Beispiel/src/HelloWorld.java)
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 {
@Override
public void start(Stage primaryStage) {
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);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
(Beispiel/build.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<project name="JavaFX Hello World Example" default="default" basedir="."
xmlns:fx="javafx:com.sun.javafx.tools.ant">
<property name="JAVA_HOME" value="/usr/lib/jvm/jdk1.8.0_45"/>
<property name="build.src.dir" value="src"/>
<property name="build.classes.dir" value="classes"/>
<property name="build.dist.dir" value="dist"/>
<target name="default" depends="clean,compile">
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
uri="javafx:com.sun.javafx.tools.ant"
classpath="${JAVA_HOME}/lib/ant-javafx.jar"/>
<fx:application id="HelloWorldID"
name="JavaFXHelloWorldApp"
mainClass="HelloWorld"/>
<fx:resources id="appRes">
<fx:fileset dir="${build.dist.dir}" includes="HelloWorld.jar"/>
</fx:resources>
<fx:jar destfile="${build.dist.dir}/HelloWorld.jar">
<fx:application refid="HelloWorldID"/>
<fx:resources refid="appRes"/>
<fileset dir="${build.classes.dir}"/>
</fx:jar>
<fx:deploy width="300" height="250"
outdir="." embedJNLP="true"
outfile="helloworld">
<fx:application refId="HelloWorldID"/>
<fx:resources refid="appRes"/>
<fx:info title="JavaFX Hello World Application"
vendor="Oracle Corporation"/>
</fx:deploy>
</target>
<target name="clean">
<mkdir dir="${build.classes.dir}"/>
<mkdir dir="${build.dist.dir}"/>
<delete>
<fileset dir="${build.classes.dir}" includes="**/*"/>
<fileset dir="${build.dist.dir}" includes="**/*"/>
</delete>
</target>
<target name="compile" depends="clean">
<javac includeantruntime="false"
srcdir="${build.src.dir}"
destdir="${build.classes.dir}"
fork="yes"
executable="${JAVA_HOME}/bin/javac"
source="1.8"
debug="on">
</javac>
</target>
</project>
Hier einige sehr leicht Informationen zur Fehlersuche, die das Problem aussetzen kann:
$ java -jar HelloWorld.jar
Error: Could not find or load main class HelloWorld
$ jar tvf HelloWorld.jar
0 Mon Apr 27 00:57:58 CDT 2015 META-INF/
113 Mon Apr 27 00:57:58 CDT 2015 META-INF/MANIFEST.MF
1014 Mon Apr 27 00:57:58 CDT 2015 HelloWorld$1.class
1436 Mon Apr 27 00:57:58 CDT 2015 HelloWorld.class
(HwlloWorld.jar META-INF/MANIFEST.MF)
Manifest-Version: 1.0
JavaFX-Version: 8.0
Class-Path:
Created-By: JavaFX Packager
Main-Class: HelloWorld
Was fehlt?
Ich habe es gerade versucht. Funktioniert ohne Probleme auf Win7. Können Sie den gesamten Inhalt des Beispielordners komprimieren und in das Internet stellen? – Roland
Danke für diesen Einblick. Könnten Sie 'echo% CLASSPATH%' auf Ihrem System ausführen und die Ausgabe teilen? Mein Klassenpfad ist nicht gesetzt, was bedeuten kann, dass ich ihn stattdessen in build.xml setzen muss (oder versuche mit der Variablen zu spielen, um zu sehen, ob es hilft) – Ninjaxor
Das gesamte Code-Projekt ist hier verfügbar https://github.com/thenotary/ halloJavafx – Ninjaxor