2012-08-26 15 views
19

tengo este código:Scala getClass.getResource() devolviendo un valor nulo

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

y siempre devuelve null (o Unit). Sólo tengo dos archivos en el proyecto:

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

y cuando corro el Test.scala el valor url siempre es nula.

Acabo de intentar reconstruir el proyecto, estoy usando IntelliJ IDEA. ¿Qué estoy haciendo mal aquí?

+1

posible duplicado de [IntelliJ: cómo hacer que los archivos no java se copien también en el directorio bin?] (Http://stackoverflow.com/questions/11176969/intellij-how-to-make-non-java-files -copied-to-the-bin-directory-as-well) – CrazyCoder

Respuesta

26

tiene tres opciones:

  • toma ventaja de ruta relativa a su paquete actual (donde Test.class es):

    getClass.getResource("test.fxml") 
    
  • se puede utilizar la ruta absoluta:

    getClass.getResource("/com/mysite/main/test.fxml") 
    
  • o cargar a través de ClassLoader (Tenga en cuenta que siempre se inicia desde la raíz):

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

En IntelliJ IDEA, asegúrese de que ha añadido a la ;?*.fxml:

Settings (Preferences en Mac) | Compiler | Patrones de recursos.

+3

No, lo mismo, devuelve nulo. Busqué en Google y probé esos, pero ninguno de ellos funciona tampoco. – Tower

+1

@rFactor Intente actualizar el proyecto. – Vulcan

+0

@rFactor: debe ser algo con su IDE. Todo el trabajo anterior, al menos cuando estoy usando IntelliJ y la estructura del proyecto maven. Además, ¿está seguro de que 'Test.scala' tiene la declaración correcta del paquete? El directorio no es suficiente. –

3

Posiblemente no se está copiando al directorio bin/desde el directorio src /? Esto ocurre en la compilación, pero si lo coloca en el directorio src/después de que el programa ya está compilado, el IDE no lo sabrá.

+0

esto resolvió mi problema. Solo tenía que borrar la compilación y luego ver los recursos.¡Gracias por evitar que pierda más tiempo en esto! – grasshopper

1

Última respuesta, pero acabo de tener el mismo problema. La causa raíz era una entrada incorrecta de ProjectProject.name en mi settings.gradle. Una vez que arreglé eso, limpié y reconstruí mi recurso y pude cargar usando getClass(). GetResource(). Espero que eso ayude a alguien.

Cuestiones relacionadas