2015-04-14 3 views
1

Недавно я создал проект javafx в eclipse, я успешно работал в eclipse, и он просто отлично работает. Я хотел запустить проект, используя интерфейс командной строки.Не удалось запустить проект javafx с помощью командной строки

Я могу успешно компилировать, но не в состоянии работать, и он продолжает давать «Ошибка: не удалось найти или загрузить основной класс Main»

Compile command (Works fine): 

javac -cp "C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar" Main.java 

Main.class is created after the above command. 

Run Command (doesn't work): 
java -cp "C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar;." Main 

Я хотел бы знать, что я здесь отсутствует в чтобы успешно запустить его.

Добавление Main.java

package application; 

import java.io.IOException; 
import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.layout.AnchorPane; 
import javafx.scene.layout.BorderPane; 


public class Main extends Application { 
    private Stage primaryStage; 
    private BorderPane root; 
    @Override 
    public void start(Stage primaryStage) { 
     try { 
      this.primaryStage = primaryStage; 
      primaryStage.setTitle("Mojo"); 
      initRootLayout(); 
      showMapLayout(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void showMapLayout() { 
     try { 
      FXMLLoader loader = new FXMLLoader(); 
      loader.setLocation(Main.class.getResource("/application/viewControllers/mapView.fxml")); 
      AnchorPane mapPane = (AnchorPane)loader.load(); 
      root.setCenter(mapPane); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    private void initRootLayout() { 
     try{ 
      FXMLLoader loader = new FXMLLoader(); 
      loader.setLocation(Main.class.getResource("/application/viewControllers/RootLayout.fxml")); 

      root = (BorderPane)loader.load(); 
      Scene scene = new Scene(root); 
      primaryStage.setScene(scene); 
      primaryStage.show(); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Является ли ваш главный класс, объявленный 'общественный класс Main {....}' – jewelsea

+0

Да, 'общественный класс Main расширяет приложение {...} ' – Deepak

ответ

2

Ваш класс объявляется в пакете application. Таким образом, чтобы собрать его так, чтобы получить правильную структуру папок, вы должны компилировать с опцией -d:

javac -cp "C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar" -d . Main.java 

Это должно создать директорию с именем application и Main.class будет там.

Затем выполните (из той же папки, а не из папки application) с

java -cp "C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar";. application.Main 
+0

Это тоже не сработало. Я имел в виду [this] (http://stackoverflow.com/questions/9436219/compile-code-using-javafx-2-0-using-commandline) поток, поэтому я попробовал, как он упоминал. – Deepak

+1

Да, извините; пропустил решающий момент: ваш класс в пакете. См. Обновление. –

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