2012-08-26 13 views
19

ho questo codice:Scala getClass.getResource() il ritorno nullo

val url: URL = getClass.getResource("com/mysite/main/test.fxml") 

e restituisce sempre null (o Unit). Ho solo due file del progetto:

MyProj/src/com/mysite/main/Test.scala 
MyProj/src/com/mysite/main/test.fxml 

e quando ho eseguito il Test.scala il valore url è sempre nullo.

Ho appena provato a ricostruire il progetto, sto usando IntelliJ IDEA. Cosa sto facendo di sbagliato qui?

+1

possibile duplicato di [IntelliJ: come si possono copiare anche i file non java nella directory bin?] (Http://stackoverflow.com/questions/11176969/intellij-how-to-make-non-java-files -copied-to-the-bin-directory-come-well) – CrazyCoder

risposta

26

Sono disponibili tre opzioni:

  • approfittare di percorso relativo al vostro pacchetto corrente (dove Test.class IS):

    getClass.getResource("test.fxml") 
    
  • è possibile utilizzare percorso assoluto:

    getClass.getResource("/com/mysite/main/test.fxml") 
    
  • oppure caricare tramite ClassLoader (Si noti che sempre iniziare dalla radice):

    getClass.getClassLoader.getResource("com/mysite/main/test.fxml") 
    

In IntelliJ IDEA, assicurarsi di aver aggiunto alla ;?*.fxml:

Settings (Preferences su Mac) | Compiler | Pattern di risorse.

+3

No, la stessa cosa restituisce null. Ho cercato su Google e provato quelli, ma nessuno di loro funziona. – Tower

+1

@rFactor Prova ad aggiornare il progetto. – Vulcan

+0

@rFactor: quindi deve essere qualcosa con il tuo IDE. Tutto il lavoro sopra, almeno quando sto usando IntelliJ e la struttura del progetto di Maven. Inoltre sei sicuro che 'Test.scala' ha la dichiarazione corretta del pacchetto? La directory non è abbastanza. –

3

Forse non viene copiato nella directory bin/dalla directory src /? Questo succede alla ricompilazione, ma se lo si rilascia nella directory src/dopo che il programma è già compilato, l'IDE non lo saprà.

+0

questo ha risolto il mio problema. Ho solo dovuto compilare clean sbt e poi vedere le risorse.Grazie per avermi impedito di perdere altro tempo su questo! – grasshopper

1

Risposta tardiva ma ho appena avuto lo stesso problema. La causa principale era una voce rootProject.name errata nel mio settings.gradle. Una volta risolto, pulito e ricostruito, la mia risorsa poteva essere caricata usando getClass(). GetResource(). Spero che questo aiuti qualcuno.

Problemi correlati