Dateipfade mit Packages

frostbyte

Aktives Mitglied
Hallo,

Ich habe ein Package de.meinname, in dem liegt eine Klasse, die Lokalisierungen übernimmt, also ich frage, nach einem String für xy und es gibt mir einen String zurück:
Java:
public class Spr {
	static ResourceBundle B = ResourceBundle.getBundle("sprache");
	
	public static String get(String ident) {
		return B.getString(ident);
	}
}

Bisher hatte ich die Datei in jedem Projekt einzeln, und da ich immer das standard-Package benutzt habe, gab es nie Probleme.

Jetzt habe ich jedoch diese Spr-Klasse in dem einen Package, die Dateien sind aber in dem anderen Package, eclipse hat die Datei jetzt unter de/meinname/kategorie/programm/sprache_de.properties und die Klasse Spr findet das jetzt nicht.

Ähnliche Probleme habe ich in Teilen, in denen Bilder geladen werden sollen:
Java:
wandI = javax.imageio.ImageIO.read(cl.getResource("wand.gif"));

Mit dem Standardpackage klappte das wunderbar, nur jetzt geht das nicht mehr.

Wie mache ich das jetzt richtig?
 
S

SlaterB

Gast
die Dateien müssen in das Verzeichnis der Klasse wie du schon halb erkannt hast, was ist dabei dann die Frage?

alternativ kannst du noch versuchen, den Pfad entsprechend anzupassen
ResourceBundle.getBundle("kategorie/programm/sprache");
 

frostbyte

Aktives Mitglied
Die sind schon im Verzeichnis der Klasse, aber dort werden sie nicht gefunden. Ich könnte die natürlich so anpassen, aber geht das nicht irgendwie eleganter, dass der direkt in seinem Package-Ordner schaut?
 
S

SlaterB

Gast
> Die sind schon im Verzeichnis der Klasse

wie passt das zu den vorherigen Aussagen
> Ich habe ein Package de.meinname, in dem liegt eine Klasse
+
> die Datei jetzt unter de/meinname/kategorie/programm/sprache_de.properties

das sieht doch so aus als wären Klasse + Datei in unterschiedlichen Verzeichnissen, einmal
de/meinname
und einmal
de/meinname/kategorie/programm
 

frostbyte

Aktives Mitglied
Ich würde die Klasse gerne zentral verwenden, für alle Programme, und für jedes Programm dann eigene Sprachdatei schreiben. Der Klasse müsste ich eventuell noch übergeben, welches Programm anfragt.

Wie komme ich denn an meine Daten, so, dass es auf allen Systemen funktioniert?
 
S

SlaterB

Gast
das ResourceBundle kann der allgemeinen Spr-Klasse ja als Parameter übergeben werden,
wird zu irgendeiner Klasse geladen, die programmspezifisch ist, eine wirds doch mindestens geben,

oder diese spezifische Klasse wird an Spr übergeben,

aber ich sehe gerade dass ResourceBundle.getBundle("sprache"); gar nicht die Klasse als Parameter erhält wie es bei
> cl.getResource("wand.gif")
ja der Fall ist,
ich denke langsam ich sollte dazu keine weiteren Vermutungen anstellen, ich verwende das selber auch nicht,

entweder bei google nach Beispielen suchen oder jemand anders antwortet hier oder in einem neuen Thema 'Umgang mit RessourceBundle'
 

frostbyte

Aktives Mitglied
Gut, das mit der Spr-Klasse mache ich dann ein andermal.

Aber wenn ich beispielsweise eine Textur laden möchte, dann muss ich das mit
Java:
ClassLoader cl …
cl.getResource("de/meinname/kategorie/programm/wand.gif");
machen?

Oder kann ich das "wand.gif" auch irgendwie im Kontext des aktuellen Packages laden, dass ich das auch in den Packages verschieben könnte, ohne dass die Pfade nicht mehr stimmen?
 
S

SlaterB

Gast
was ich weiß ist, dass bei class.getResource(pfad) relativ zum passenden Verzeichnis des packages gesucht wird,

schnell nachgeschaut landet der Aufruf auch bei ClassLoader.getResource(),
und zwar indem der Pfad angepasst wird

Java:
    /**
     * Add a package name prefix if the name is not absolute Remove leading "/"
     * if name is absolute
     */
    private String resolveName(String name) {
        if (name == null) {
            return name;
        }
        if (!name.startsWith("/")) {
            Class c = this;
            while (c.isArray()) {
                c = c.getComponentType();
            }
            String baseName = c.getName();
            int index = baseName.lastIndexOf('.');
            if (index != -1) {
                name = baseName.substring(0, index).replace('.', '/')
                    +"/"+name;
            }
        } else {
            name = name.substring(1);
        }
        return name;
    }

viel gibts da also nicht zu verstehen,
ClassLoader bestimmt die Menge der Grundverzeichnisse im Dateisystem, evtl. gar Jar-Dateien, in denen gesucht wird,

übergeben wird ein absoluter oder relativer Pfad,
wenn man eine Class-Datei dazwischenpackt wird dessen package mit eingebaut,
ansonsten kann man das ja auch mehr oder weniger selber machen, z.B. obige Methode kopieren,

wo die Dateien sind sollte man aber schon wissen,
rekursiv beliebige Verzeichnisbäume werden hier nicht durchsucht, das müsste man selber programmieren
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Dateipfade systemunabhängig setzen Java Basics - Anfänger-Themen 3
J Packages erstellen Java Basics - Anfänger-Themen 7
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
A Exceptions und Packages Java Basics - Anfänger-Themen 6
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
Mxxxt Übersicht Java-Packages Java Basics - Anfänger-Themen 3
D Zusätzliche Packages benutzen? Java Basics - Anfänger-Themen 6
C Java Packages Konvention Namensvergabe Java Basics - Anfänger-Themen 3
B eclipse und packages weiterentwickeln Java Basics - Anfänger-Themen 5
B Compiler-Fehler Packages fehlen? Java Basics - Anfänger-Themen 5
J Eclipse + Java + Packages importieren Java Basics - Anfänger-Themen 7
J eigene packages bzw klassen verwenden Java Basics - Anfänger-Themen 25
S Richtlinien wie man Classen in Packages organisieren soll? Java Basics - Anfänger-Themen 3
G Packages -> was bringen sie? Java Basics - Anfänger-Themen 4
V Java Packages Java Basics - Anfänger-Themen 4
O Funktionen dateiübergreifend mit Packages Java Basics - Anfänger-Themen 6
J Zugriff auf Variable vom typ (default) durch Importieren des Packages? Java Basics - Anfänger-Themen 5
D Javadoc für Packages oder ganze Projekte Java Basics - Anfänger-Themen 5
U Zugriff auf andere Packages Java Basics - Anfänger-Themen 10
S Problem mit Packages Java Basics - Anfänger-Themen 9
C Klassen Main-Routine in Packages? Java Basics - Anfänger-Themen 7
L Konsole und packages Java Basics - Anfänger-Themen 8
B Packages in Eclipse umbennen Java Basics - Anfänger-Themen 12
V Packages: Cannot find symbol Java Basics - Anfänger-Themen 12
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
B Wie funktioniert der Import von Dritt-packages in Eclipse? Java Basics - Anfänger-Themen 5
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
M Tief verschachtelte Packages Java Basics - Anfänger-Themen 7
Z CLASSPATH + Packages Java Basics - Anfänger-Themen 6
N packages und finden von Klassen Java Basics - Anfänger-Themen 2
J Packages in Jar-Datei Java Basics - Anfänger-Themen 7
D Packages verwenden und in eigenes Projekt integrieren Java Basics - Anfänger-Themen 3
S Anfängerproblem mit Packages Java Basics - Anfänger-Themen 4
J Anfängerfrage zu Grundlagen von Packages Java Basics - Anfänger-Themen 7
B Unterklassen, Packages Java Basics - Anfänger-Themen 3
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
F OOP Wrapper ermöglicht Zugriff für andere Packages? Java Basics - Anfänger-Themen 6
T Javac und Packages Java Basics - Anfänger-Themen 4
B Fragen zur Initialisierung/Zuweisung der Variable + Packages erstellen Java Basics - Anfänger-Themen 4
braindump Packages in verschiedenen Unterverzeichnissen Java Basics - Anfänger-Themen 3
G Verschiedene Packages Java Basics - Anfänger-Themen 3
R wo befinden sich die packages? Java Basics - Anfänger-Themen 5
S 2 Packages Java Basics - Anfänger-Themen 14
D packages importieren Java Basics - Anfänger-Themen 3
I Frage zu Packages Java Basics - Anfänger-Themen 19
T Anagram Game - warum ist es auf 2 Packages aufgeteilt? Java Basics - Anfänger-Themen 3
S problem mit packages Java Basics - Anfänger-Themen 7
G Konventionen für die Bezeichnung von Packages Java Basics - Anfänger-Themen 4
M problem mit packages Java Basics - Anfänger-Themen 5
D Packages mit Wizard erstellen Java Basics - Anfänger-Themen 2
S Woher Packages bekommen? Wie installieren? (Netbeans) Java Basics - Anfänger-Themen 4
B Packages einfach kopieren? Java Basics - Anfänger-Themen 13
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
G Aufgabe mit Packages Java Basics - Anfänger-Themen 3
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
H javac mit meheren packages Java Basics - Anfänger-Themen 2
G Aus package auf andere eigene packages zugreifen? Java Basics - Anfänger-Themen 7
E import Anweisung und Packages Java Basics - Anfänger-Themen 3
F Pfadfrage in Packages und jar-Archiven Java Basics - Anfänger-Themen 3
P packages verwenden Java Basics - Anfänger-Themen 3
M Variabelzugriff auf fremde Packages Java Basics - Anfänger-Themen 5
D Probleme nach Einbindung einens neuen Packages Java Basics - Anfänger-Themen 5
T Packages erstellen und importieren? Java Basics - Anfänger-Themen 10
D Packages Java Basics - Anfänger-Themen 3
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
P wohin muss ich die packages kopieren? Java Basics - Anfänger-Themen 12
T Erstellen eigener packages Java Basics - Anfänger-Themen 6
H Packages in JAR-Datei einbinden Java Basics - Anfänger-Themen 10
S Importieren in Packages Java Basics - Anfänger-Themen 11
C packages, jars - Verstaendnisfrage Java Basics - Anfänger-Themen 7
L Problem mit Packages Java Basics - Anfänger-Themen 5
L Eigene Packages importieren Java Basics - Anfänger-Themen 2
N Packages definieren bzw. zum Classpath hinzufügen Java Basics - Anfänger-Themen 4
A Packages und Vererbung Java Basics - Anfänger-Themen 5
S Packages verwenden Java Basics - Anfänger-Themen 7
T Nerv! Packages und Classpath Java Basics - Anfänger-Themen 2
H probleme mit import von eigenen packages Java Basics - Anfänger-Themen 4
C Packages... Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben