Pregunta

Tengo un proyecto Java / Maven que usa los iconos de tango, por lo que estoy usando la siguiente dependencia:

<dependency>
    <groupId>org.freedesktop.tango</groupId>
    <artifactId>tango-icon-theme</artifactId>
    <version>0.8.90</version>
</dependency>

y el siguiente código, que funcionaría bien antes de mover el proyecto a Maven:

imageIcon = new ImageIcon(this.getClass().getResource(org/freedesktop/tango/22x22/actions/address-book-new.png));

Sin embargo, ahora resulta en nullpointerException por alguna razón. El frasco generado no contiene las imágenes, ni las hace referencia de ninguna manera, pero las clases en otros frascos son.

He investigado mucho, pero he encontrado que la mayoría de las personas agrupan sus imágenes con su origen.Este no es mi caso.

¿Qué necesito hacer para Maven para hacer referencia y / o empaquetar estas imágenes de manera fija? ¿Cómo puedo conseguir que Maven construya un frasco de ejecución independiente (esta es una aplicación de swing)?

¿Fue útil?

Solución

Si agrega una barra antes de la ruta, funciona:

ImageIcon imageIcon = new ImageIcon(this.getClass().getResource("/org/freedesktop/tango/22x22/actions/address-book-new.png"));

de la API :

antes de la delegación, se construye un nombre de recurso absoluto de la Dado nombre de recursos utilizando este algoritmo:

Si el nombre comienza con un '/' ('\ u002f'), entonces el nombre absoluto de El recurso es la parte del nombre que sigue al '/'.De lo contrario, El nombre absoluto es del siguiente formulario:

modificado_package_name / nombre donde el modificado_package_name es el Nombre del paquete de este objeto con '/' sustituido por ''.('\ u002e').

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top