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).

Foi útil?

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').

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top