Java Netbeans Maven Projekt mit Resourcen und Properties-Files

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Moin moin,

ich würde mich als alter Hase bezeichnen was Netbeans, Java und GUI Anwendungen betrifft, dennoch bekomme ich eine Sache nicht in den Griff.

Früher habe ich ganz normale Projekte in Netbeans erstellt mittel build.xml, nun möchte ich aber Projekte als Mavenprojekte anlegen.
Das Problem dabei ist allerdings, das beim Testen meiner Anwendungen NullPointerExceptions vom Himmel regnen.
Es werden einfach meine Resourcen nicht gefunden.
Jetzt werden Einige denken der Idiot hat vergessen im pom.xml den Pfad anzugeben wo die Resourcen liegen, damit diese mitkopiert werden, so ist es leider nicht.

​Da ich es sehr komfortabel finde mit dem GUI Designer von Netbeans zu arbeiten tue ich das.Wer Netbeans kennt weiß auch wie man dort im GUI Designer die Resourcen angibt, doch leider werden diese nicht gefunden beim Ausführen der Anwendung.Hat da Jemand mal einen Tipp für mich, plage mich schon einige Zeit damit rum, würde nämlich gerne meine Projekte alle als Mavenprojekte anlegen.
 
Ich glaube angaben zur Projektstruktur (Verzeichnisse, POM) wären hier ganz hilfreich.
 
Okay kein Problem meine Resourcen liegen in "/src/main/java/com/ll/resourcen" durch Angabe des Pfades der POM werden die Resourcen auch wunderbar kopiert, lediglich beim Start der Applikation gibts NullPointer.

Damit ein Button z.B. als Bild angezeigt wird rufe ich die Resource so auf:
PHP:
neuButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/ll/resourcen/neuDokument.png")));
Im alten Projekt, bei Maven wäre ich mir jetzt nicht ganz sicher.
Daher mein Ruf nach Hilfe.
 
Hallo,

Dein Ausdrück "...im pom.xml den Pfad anzugeben wo die Resourcen liegen, damit diese mitkopiert werden..." erweckt bei mit das Gefühl, dass Du nicht ganz genau weiss, wie man die Abhängigkeiten in einem Maven-Projekt einbindet. Nämlich:

in der pom.xml im Tag <dependencies>
z.B. <dependency>
<groupId>de.xxx.yyy</groupId>
<artifactId>deineAnwendung</artifactId>
<version>0.0.1</version>
</dependency>

Die Abhängigkeit die Du selber programmiert hast muss mindestens im lokalen Maven-Repository stehen (meistens lokal auf der Festplatte), d.h. dass Du das Abhängigkeit-Projekt, was Du jetzt hier brauchst, vorher mit Maven-Befehl "maven install" in das lokalen Maven-Repository deployed hast.

Andere Bibliotheken wie z.B.
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>

bezieht Maven automatisch aus dem Internet.

Also befasse Dich ggf. mit der Arbeitsweise und der Auskonfigurierung des Maven (wichtig ist die settings.xml).

MfG
 
Es geht um Bilder und Property Files für Lokalisierungen, nicht um Libraries und Dependencies.

In meinem Falle also um:
PHP:
<resources>
<resource>       
<directory>PFADZURRESOURCE</directory>     
</resource>   
</resources>
 
Resourcen liegen in Maven Projekten üblicherweise in einem separaten Verzeichnisbaum unter:
/src/main/resources/<Packagename>/<Resourcename>
Dann werden sie von Maven auch ohne jegliche Angaben im Pom kopiert. Darauf zugreifen kannst du ganz normal über <Packagename>/<Resourcename>
 
Kein Problem @ad[Q]ad
bei mir werden die Resourcen ja auch kopiert, mein Problem besteht darin über den GUI Builder mit zu teilen welche Resource er nehmen soll beim kompilieren gibts nämlich dann eine besagte NullPointer :( wenn ich über den GUI Builder die Resource zugeteilt habe...

Denn sowas hier geht nämlich in die Hose:
PHP:
icon = new ImageIcon(getClass().getResource("com/ll/resourcen/app.png"));

Wenn in der POM steht
PHP:
<resources>
<resource><directory>src/main/java/com/ll/resourcen</directory>     </resource>   </resources>
 
Zuletzt bearbeitet:
Wie gesagt, Resourcen gehören nach /src/main/resources/<Packagename>/<Resourcename> und nicht nach /src/main/java/<Packagename>/<Resourcename>. Die Resourcen wo anders unterzubringen ist Bad Practice und sollte vermieden werden. Wenn du die Resourcen im POM so angibst wie dues machst, dann werden sie direkt ins Root-Verzeichnis kopiert, also ohne den Package-Pfad.
 
Das habe ich verstanden. Wie zur Hölle lade ich dann diese Resource mittels GUI Builder in Netbeans ^^ das will ich wissen.
Ohne den ganzen Aufruf selber zu schreiben.
​In build.xml Projekten geht es ja ohne Probleme nur in Maven nicht.
 
Naja mach die Dateien selbst in den richtigen Resources-Ordner und wähle sie dann im GUI Builder aus...
 
​Danke nochmal für die Hilfe.

Mein Problem war einfach das im GUI Builder der Pfad nicht angezeigt wurde, bzw nicht wählbar war...
 
Hallo,

ich habe das gleiche Problem, ich habe meine property-flies unter src/main/resources und der Matisse GUI Builder zeigt den Pfad zu den Resourcses nicht an. Gibt es dafür eine Lösung so dass der Matisse den Pfad zu den Properties findet?

Wenn ich ein "normales" Java Projekt hätte könnte ich den Pfad /src/main/resources als SRC anbinden. (Rechte Maustaste auf das Projekt, Properties und ....) Aber mein Projekt ist ein Gradle-Projekt und ich nutze das Gradle-Plugin: http://plugins.netbeans.org/plugin/44510/gradle-support. Dort kann ich die Pfade nicht ohne weiteres angeben. Und in meinem Gradle-Skript habe ich schon verschiedene Dinge bzgl. Sourceset ausprobiert, leider ohne Erfolg.

dJ_We$t, wie hast Du das bei Dir gelöst? Jemand noch eine andere Idee?
Ich wäre über jeden Tipp dankbar :heul::heul:
 
Moin,

im allgemeinen macht getResource() Probleme in Maven Projekten, da die Pfade nach dem Packen meist nicht richtig aufgelöst werden können (virtuelles Pfadsystem innerhalb der JARs, etc).
Sofern möglich, versuche dein Glück mit der getResourceAsStream() Methode. Da javax.swing.ImageIcon ein ByteArray fressen kann, kannst du den Stream in einen ByteArrayInputStream packen und die von diesem ein byte[] ausgeben lassen.
 
Zurück
Oben