Domanda

Ho un progetto Java / Maven che usa le icone di tango, quindi sto usando la seguente dipendenza:

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

e il seguente codice, che funzionerebbe bene prima di spostare il preyect a Maven:

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

Tuttavia, ora si traduce in NullPointerException per qualche motivo. Il barattolo generato non contiene le immagini, né le riferisce in alcun modo, ma le classi in altri barattoli sono.

Ho studiato molto, ma ho trovato che la maggior parte delle persone fa il raggruppamento delle loro immagini con la loro fonte.Questo non è il mio caso.

Cosa devo fare per Maven in riferimento e / o confezionare queste immagini propriamente? Come posso ottenere Maven per costruire un barattolo runnico autonomo (questa è un'applicazione swing).

È stato utile?

Soluzione

Se aggiungi una barra prima del percorso funziona:

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

Dal API :

.

Prima della delegazione, un nome di risorsa assoluto è costruito dal Dato il nome della risorsa usando questo algoritmo:

Se il nome inizia con un '/' ('\ u002f'), quindi il nome assoluto di La risorsa è la porzione del nome seguendo il '/'.Altrimenti, Il nome assoluto è del seguente modulo:
modificato_package_name / nome in cui il modificato_package_name è il Nome del pacchetto di questo oggetto con '/' sostituito per '.'('\ u002e').

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top