Usando os recursos de imagem em um frasco usando o maven
Pergunta
Eu tenho um java/projeto maven que usa tango ícones, então, eu estou usando a seguinte dependência:
<dependency>
<groupId>org.freedesktop.tango</groupId>
<artifactId>tango-icon-theme</artifactId>
<version>0.8.90</version>
</dependency>
E o seguinte código, o que seria ok antes de me mudar o projeto para o maven:
imageIcon = new ImageIcon(this.getClass().getResource(org/freedesktop/tango/22x22/actions/address-book-new.png));
No entanto, agora, os resultados em NullPointerException por algum motivo.O jar gerado não contém imagens, nem faz referência a eles, de forma alguma, mas as classes em outros frascos são.
Eu já investigou um monte, mas eu encontrei a maioria das pessoas bundle de suas imagens, com sua origem.Este não é o meu caso.
O que eu preciso fazer para que o maven para referência e/ou pacote estas imagens adequadamente?Como posso obter o maven para construir um autônomo runnable jar (este é um swing).
Solução
Se você adicionar uma barra antes do caminho ele funciona:
ImageIcon imageIcon = new ImageIcon(this.getClass().getResource("/org/freedesktop/tango/22x22/actions/address-book-new.png"));
Do API:
Antes de delegação, absoluta nome do recurso é construído a partir da dado o nome de recurso usando este algoritmo:
Se o nome começa com uma '/' ('\u002f') e, em seguida, o nome absoluto do o recurso é a porção do nome a seguir a '/'.Caso contrário, o nome absoluto é o seguinte formulário:
modified_package_name/nome Onde o modified_package_name é o nome do pacote ou do objeto com '/' substituído por '.' ('\u002e').