Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe nun ein schickes kleines Java-Programm geschrieben, und möchte es zum Download anbieten. Ich find's aber nicht wirklich cool das die Grafiken einfach so in einem Ordner sichtbar sind und ausgetauscht werden können. Gibt es da einen Trick, das alles in eine einzige Datei zu verpacken? z.B. eine EXE oder ähnliches?? Das brauche ich für Mac, Linux und Windows. Wie macht ihr das?
Normalerweise packt man diese Dateien alle in ein Java Archiv namens Jar. Dies ist dann bei richtiger Konfiguration auch wie eine exe unter Windows mit einem Doppelklick zu starten. Und das beste ist, dass das sogar plattformunhabhängig ist. Such also mal nach einam Buildbefehl in deiner IDE, zum einfachen Erstellen eines solchen Archivs.
Leider klappt das nicht so recht... wie es aussieht, fehlen in der JAR sämtliche Grafiken und Sounds. Eclipse bietet mir da auch nicht wirklich an, diese hinzuzufügen.
Meine Projektstruktur sieht so aus (im Navigator, Eclipse):
Code:
PROJEKT
bin (*.class Dateien)
|-pics (viele Bilder)
|-sound (viele Sounddateien)
src (*.java Dateien)
Wie bringe ich Eclipse bei, alles außer die *.java Dateien in die JAR zu legen, so das sie ausführbar ist und auch die Grafiken und Bilder enthält? Ich habe keine Packages, weil es nur ein schnelles "quick-and-dirty" Übungsprojekt war...
Nein, kann ich nicht :-(
RMT auf Projekt > "Export..." > "Runnable JAR File"
Der Wizzard bietet mir keinerlei Setup-Möglichkeit. Vermutlich muss ich vorher irgendwo eine "Launch Configuration" erstellen. Wo macht man das? Die Einstellungen von "Run as..." > "Java Application" bewirken hier nichts, da ich die Einstellung bei "Launch Configuration" nicht anwählen kann. Erscheint nicht zur Auswahl. Sind wohl zwei verschiedene Dinge.
Im "bin"-Ordner haben Bilder und auch anderes nichts verloren. Der "bin"-Ordner wird von Eclipse erstellt und verwaltet, nicht vom Programmierer. Du kannst die Bilder in jeden anderen Ordner schieben (persönlich verwende ich auch den "src"-Ordner, da die Bilder a) zum Programm gehören und b) so durch "ClassLoader.getResource" geladen werden können)
Im Export-Dialog kannst du dann die Bilder einbinden (Im Menü über File > Export > Java > Jar File). Auf der zweiten Seite kannst du für jede Datei einzeln bestimmen ob sie in das JAR kommt oder nicht.
Danke für den Tipp! Nun habe ich die Bilder und Sounds nach src verschoben. Ich habe keine Packages, nur den src und bin Ordner. Im src Ordner befinden sich nun sounds und pics.
Beim Ausführen als JavaApp in Eclipse fehlen nun die Bilder und Sounds.
Bisher funktionierte es so:
Code:
private BufferedImage[] loadPics(String path, int pics) {
BufferedImage[] anim = new BufferedImage[pics]; //BufferedImage Array in der Größe der Einzelbilder erzeugen
BufferedImage source = null;
//Bild einlesen
URL pic_url = getClass().getClassLoader().getResource(path);
try {
source = ImageIO.read(pic_url); //Quellbild laden
} catch (IOException e) {}
//Einzelbilder aus Imagemap raus kopieren und in anim Array legen
for(int x=0; x < pics; x++) {
int pWidth = source.getWidth();
int pHeight = source.getHeight();
anim[x] = source.getSubimage(x * (pWidth / pics), 0, pWidth/pics, pHeight);
}
return anim;
}
Das ist seltsam. File.separator liefert mir zwar einen \ unter Windows XP, aber innerhalb von Eclipse (Run as... Java Application) läuft es damit einwandfrei!
Wenn ich File.separator benutze, funktioniert die exportierte Runnable JAR auf dem Mac!
Wenn ich "/" benutze, funktioniert die exportierte Runnable JAR weder auf Windows noch auf Mac.
Nun habe ich es bei File.separator belassen, allerdings klappt das mit der Runnable JAR immer noch nicht so richtig. Ich kann das Java Programm unter XP nur über die Konsole anschmeißen, wenn ich die JAR entpackt habe.
Das ist seltsam. File.separator liefert mir zwar einen \ unter Windows XP, aber innerhalb von Eclipse (Run as... Java Application) läuft es damit einwandfrei!
Ob Dateinamen Groß-/Kleinschreibung unterscheiden hängt vom Dateisystem und damit auch vom Betriebssystem ab. Unter Linux "ignoriert" das Eclipse keines Falles. In JAR-Dateien gibt's Groß-/Kleinschreibung. Man sollte daher immer auf Groß-/Kleinschreibung achten.
Was ich meinte ist, das Eclispe unter Windows gross/kleinschreibung ignoriert, während es die Vm bei jar's (auch unter windows) nicht tut, böse Fehlerquelle
Ich hab ein ähnliches Problem .. bei mir werden die Bilder leider auch net angezeigt ... hab versucht eure Bisherigen Tipps anzuwenden .. aber irgendwie ohne erfolg
Code:
private void init() {
this.setSize(800, 600);
this.add(new myPanelStart( (".\\src\\aimages\\HinterStart.jpg"), this));
this.setResizable(false);//macht das fenster nicht vergrößerbar
}
so binde ich die Bilder ein die im Source Ordner im Ordner aimages liegen... funktioniert so auch wunderbar ..
aber nicht mehr in der Jar ..