2013-07-04 3 views
6

Sono nuovo di JavaFX e sto cercando di eseguire una semplice applicazione. la sua interfaccia utente è stata creata con javaFX scenebuilder e la classe Main dovrebbe visualizzare l'interfaccia utente, non altro.errore di applicazione JavaFX: Nessuna risorsa specificata

public class Main extends Application { 

    public static void main(String[] args) { 
     launch(Main.class, (String[])null); 
    } 

@Override 
public void start(Stage primaryStage) {; 
    try { 
     AnchorPane root=(AnchorPane)FXMLLoader.load(Main.class.getResource("Main.fxml")); 
     Scene scene = new Scene(root); 
     primaryStage.setScene(scene); 
     primaryStage.setTitle("Issue Tracking Lite Sample"); 
     primaryStage.show(); 
    } catch (IOException e) {System.err.println(e);} 

    } 


} 

ho ottenuto questo errore quando si esegue l'applicazione:

No resources specified. 

/D:/workspace/FileSharing_ServerSide/bin/com/Shayan/FileSharing/Server/Main.fxml:16 
    at javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:305) 
at javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:197) 
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:588) 
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2430) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2136) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2742) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2721) 
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2707) 
javafx.fxml.LoadException: No resources specified. 

Si dice che il file non esiste, ma esiste in quella cartella con lo stesso nome! è nello stesso pacchetto del codice. qualcuno sa cosa sta succedendo ?! grazie in anticipo

+2

wha t è il contenuto di Main.fxml? Sembra che l'errore sia lì. – Dahaka

+0

Main.fxml sono corretti nello stesso pacchetto della tua classe principale? –

+0

Sì, l'errore era dal file fxml !! il nome del controller non è stato specificato correttamente nel codice fxml. grazie Dahaka;) –

risposta

11

JavaFX genera l'eccezione javafx.fxml.LoadException: No resources specified. quando FXMLLoader non è riuscito a compilare il grafico scena a causa di una risorsa mancante.

Questo potrebbe accadere per motivi di varietà. L'ho riscontrato per i seguenti motivi:

  1. Si è verificato un errore durante il caricamento del controller specificato nel file fxml.
  2. Il file fxml tenta di fare riferimento a una risorsa in un ResourceBundle ma lo FXMLLoader non ha avuto il ResourceBundle correttamente configurato.

Ci possono essere altri motivi per cui questa eccezione viene generata dal di dentro JavaFX, ma la causa principale è che per qualche motivo o un altro, il FXMLLoader rilevato un'eccezione durante il tentativo di creare il grafico scena dal file fxml.

+0

Enfasi sul tuo 2. motivo. Mi ci sono voluti per sempre per rendermene conto. Grazie! – oskopek

1

Per ottenere la risorsa, si dovrà specificare la (!) Nome completo di base. Cioè, con tutti i pacchetti prima.

Se il file di risorse ha lo stesso nome bas come la classe controller (che è abbastanza ragionevole in quanto aiuta a mantenere le cose insieme), si può fare questo nel modo seguente:

String className = this.getClass().getCanonicalName(); 
// @formatter:off 
    ResourceBundle languageResource = 
      ResourceBundle.getBundle(className, Locale.GERMAN); 
    // formatter:on 

    Object objPane = FXMLLoader.load(fxmlUrl, languageResource); 

I ho scritto un helper per il caricatore di risorse private, che farà il trucco ottenendo un oggetto e un locale. Certo, utilizzo un locale costruito con le mie impostazioni, non una costante, ma volevo mantenere le cose semplici.

Per il nome del file di risorse: Mentre la mia classe si chiama MainWindow, il file di risorse (nella stessa confezione) è MainWindow_de.properties (dove "de" è la parte del linguaggio, quindi ho anche un MainWndow_en.properties nel pacchetto.

l'estensione è necessaria, in quanto questo è il modo in cui il nome del file è in costruzione. senza l'estensione, non sarà riconosciuto il file, che conduce al tuo eccezione ben noto.

speranza che impedisce ad altri di passare ore nel fare ricerca ...