2016-10-07 3 views
0

Когда я пытаюсь запустить приложение JavaFX от терминала, он не запускается, показывая Error: Could not find or load main class com.test.javafx.HelloWorldНе удается запустить приложение JavaFX из терминала

Вот мой код:

package com.test.javafx; 

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); 
    } 
} 

компиляции не показывает ошибку и успешный. Но попытка запустить результаты приложения в Error: Could not find or load main class com.test.javafx.HelloWorld. Однако, когда я запускаю простое приложение, оно выполняется без каких-либо ошибок.

Вот выход javap:

Compiled from "HelloWorld.java" 
public class com.test.javafx.HelloWorld extends javafx.application.Application { 
    public com.test.javafx.HelloWorld(); 
    public void start(javafx.stage.Stage); 
    public static void main(java.lang.String[]); 
} 

Я также попытался следующие:

java -cp /home/itachi/mycategories/installs/devel/java/jdk/jdk1.8.0_101/jre/lib/ext/jfxrt.jar;." com.test.javafx.HelloWorld 

, но это не работает, как хорошо.

ответ

1

Исправлена ​​проблема

Выпуск

При установке некоторых программ с помощью менеджера пакетов Linux, OpenJDK JRE Безголовый (как пакет зависимостях) был установлен. Это было подтверждено пуском:

$ java -version 
openjdk version "1.8.0_91" 
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14) 
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode) 
$ java com.test.javafx.HelloWorld 
Error: Could not find or load main class com.test.javafx.HelloWorld 

Если я использую эту JVM OpenJDK, она показывает ошибку.

Fix

Изменен переменная PATH так что теперь JVM Oracle, по умолчанию.

$ ${JAVA_HOME}/bin/java -version 
java version "1.8.0_101" 
Java(TM) SE Runtime Environment (build 1.8.0_101-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) 
$ ${JAVA_HOME}/bin/java com.test.javafx.HelloWorld => [Now the program runs] 

[After Changing the ~/.bashrc file] 
$ . ~/.bashrc 
java -version 
java version "1.8.0_101" 
Java(TM) SE Runtime Environment (build 1.8.0_101-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode) 
$ java com.test.javafx.HelloWorld => [Now the program runs] 

Неизвестный фактор

Тем не менее, я не знаю, почему OpenJDK JVM бросает Error: Could not find or load main class com.test.javafx.HelloWorld, потому что запуск Oracle JVM из того же места делает приложение.

+0

Это не даст сообщение об ошибке, которое вы отправили в вопросе. –

+0

@James_D Я обновил ответ. Надеюсь, что ответит на ваш вопрос. – Kenpachi

+0

Вы предполагали, что выход из 'java -version' в первом блоке кода будет идентичен выходу во втором блоке кода? –

0

Обычно это происходит, когда java не может найти ваши скомпилированные классы в classpath. Постарайся java -cp <path to .class files> HelloWorld

+0

Я пробовал это. Не работает – Kenpachi

Смежные вопросы