Relative Pfade

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo

Ich lade ein Bild, um es später zu scalieren und als Hintergrundbild anzuzeigen Dazu habe ich bis jetzt folgendes benutzt:
Code:
image = new Image(null, "C:/MDSD/GC/GodsContest/pics/IMG_0170.jpg");

Alles funktionierte super. Nun soll ich auf relative Pfade unsteigen. Nach langen suchen (auch hier im Forum) wurde ich nicht fündig. Z.B.:
Code:
URL test = getClass().getResource("/pics/IMG_0170.jpg");
		image = new Image(null, test.getRef());

Dabei ist der Order "pics" auf der selben Ebene wie der src-Ordner.

Was mache ich dabei falsch?

Ich verwende Eclipse 3.3, Java 6.0 und ein RCP+SWT projekt.

Danke im Vorraus.
 

Shadeo

Mitglied
kanns zwar grad nicht testen, aber versuch

Code:
URL test = getClass().getResource("../pics/IMG_0170.jpg");
 
G

Gast

Gast
jo habe ich schon. mit einem Punkt, mit zwei punkten am Anfang und auch mit "\\" als Fileseperator und dem File.Seperator...
Leider alles nichts.
 

The_S

Top Contributor
Der src-Ordner wird ja auch nicht ausgeführt. Dein Bilder ordner muss auf selber "Ebene" wie die class-Dateien sein.
 
G

Guest

Gast
Hm... also irgendwie scheine ich das ganze immer noch nicht so ganz "gefressen" zu haben...

Ich fang mal sehr kleinschrittig an, damit ich nicht vielleicht etwas vergessese.

ich habe offenes Eclipse. Durch die automatische Generierung meines Projektes habe ich unter meinem Projektnamen folgenden "tree"-Elemente:
- src
- JRE System Library
- Plug-in Dependencies
- Deployment
- icons
- META-INF
- buil.properties
- Projektname.product
- plugin.xml

Hinzugefügt zu dieser Liste habe ich "pics", wo nun meine Bilder lagern.

Nun versuche ich mein Projekt zu debuggen. So viel ich das verstanden habe, werden erst beim Starten die ganzen Class-Dateien erstellt und zwar im bin-Ordner. Doch den Bin-Ordner habe ich nicht mal in meiner Ansicht.

Desweiteren gibt es standardmäßig auch einen icon-Ordner aus dem offenbar ja doch die Bilder gezogen werden können, auch wenn extrem tief in Code vergraben sind. Warum kann ich es denn nicht mit meinem Pics machen und wie? Und wenn Doch, naja... wie oder mit welchen Pfadangabe...
 

Wildcard

Top Contributor
Pack die Dinger in das icon Verzeichnis und lass sie dir vom Plugin geben (zB AbstractUIPlugin#imageDescriptorFromPlugin).
Nicht vergessen icons in den binary build aufzunehmen.
 

The_S

Top Contributor
du kannst den pics ordner auch in den src ordner verschieben. Dann musst du aber über Eclipse kompilieren, dabei werden die Bilder automatisch in den bin ordner mit kopiert.
 

Wildcard

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
du kannst den pics ordner auch in den src ordner verschieben. Dann musst du aber über Eclipse kompilieren, dabei werden die Bilder automatisch in den bin ordner mit kopiert.
Es handelt sich wie der OP schreibt um ein RCP Projekt, also sollte man die Struktur auch Eclipse Like gestallten. Der Weg führt über die ImageRegistry, bzw. das Plugin.
 
G

Guest

Gast
Danke für die Tips!

hui... nun wird es doch komplizierter, als ich dachte...

Aber wofür steht OP?

also... gibt es ein Tutorial oder eine deutsche Erklärung für das AbstractUIPlugin#imageDescriptorFromPlugin u.s.w.?
Ich bin neu in Java und erst recht im RCP.

Das Projekt selbst soll später Standalone sein. Also der Teil den ich mache. Es soll aber Schnittstellen zur verfügung stellen, so dass weitere Plugins dazu geschrieben werden können. Deshalb RCP. Ist auch eine Vorgabe von oben.

Wo gibt es denn dazu eine "vernüftige" Beschreibung? öhm... sagen wir es so: Wo gibt es eine KLEINSCHRITTIGE Beschreibung für blutige Anfäger wie mich?
 

Wildcard

Top Contributor
OP = Original Poster

Wo genau ist dein Problem?
Du hast eine Plugin Klasse (den Activator deines Plugins). Selbige hat eine Methode um Images einfach über deren Pfad aus dem Plugin zu laden, also einfach nur benutzen.
Es sei denn es handelt sich nicht um ein UI Plugin, dann wird allerdings die Frage erlaubt sein, wieso ein Plugin das nicht von AbstractUIPlugin erbt überhaupt Images braucht.
 
G

Guest

Gast
Du hast eine Plugin Klasse (den Activator deines Plugins).

AHHHHH! *bg* Sorry, ich bin wirklich erst am Anfang... Ne dann ist klar was gemeint ist! Ich weiß einfach noch nicht ganze wo ich genau gucken muss... :oops:

Ich werde dies gleich durchtesten, weil es mich interessiert. Aber per Zufall bin ich noch auf etwas gestoßen, was auch funktioneirt hat:

Code:
image = new Image(null, getClass().getResourceAsStream("/pics/myImage.jpg"));

Das einzige, was man beachten muss, ist dass man den pics-Ordner mit in den Build einpackt. Aber das wurde ja schon gesagt.

VIELEN DANK FÜR EURE HILFE!
 

Wildcard

Top Contributor
Du sprichst von einem RCP/SWT Projekt. Du solltest grundsätzlich über die Activator Klasse gehen, da dort alle Images in die ImageRegistry gepackt werden.
Bei SWT muss nämlich peinlichst darauf geachtet werden das alle Resourcen wieder freigegeben werden.
Wenn du also auf diese Art ein Bild erzeugst, hast du einen Memory Leak produziert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Relative Pfade zur ini-Datei Plattformprogrammierung 28

Ähnliche Java Themen

Neue Themen


Oben