# Export von Library



## Max020101 (13. Apr 2017)

Hi Java-Forum,
ich bin seit einer weile dabei mit zwei Freunden ein Spiel zuprogrammiern und Momentan stehen wir vor einem Fehler der uns die letzten Nerven nach monaterlanger Programmierarbeit raubt. 
Wir wollt unser Programm mit den dazu als Library eingefügten SpriteSheets exportieren. Und zack beim öffnen der Datei war der Frame leer. Ich hab das Problem schon mal gegoogelt und auch die Exportierung von Libraries beachtet: Export>Runnable Jar File>Packaged Required Libraries into generated Jar. Wäre echt froh wenn uns jemand helfen könnte. 
Danke im vorraus.
Max020101


----------



## krgewb (14. Apr 2017)

Müssen diese Bilder in einer separaten Library sein?


----------



## mrBrown (14. Apr 2017)

Gab's nen StackTrace?


----------



## Max020101 (14. Apr 2017)

krgewb hat gesagt.:


> Müssen diese Bilder in einer separaten Library sein?


Wusste keine andere Lösung. Hättest du da eine Idee?


----------



## Max020101 (14. Apr 2017)

mrBrown hat gesagt.:


> Gab's nen StackTrace?


Also es wurde mir kein Error ausgegeben. Gibt es eine Möglichkeit, dass es z. B. einen Error gab den ich nicht gesehen hab?


----------



## mrBrown (14. Apr 2017)

Max020101 hat gesagt.:


> Also es wurde mir kein Error ausgegeben. Gibt es eine Möglichkeit, dass es z. B. einen Error gab den ich nicht gesehen hab?


Hast du über Konsole gestartet?
Ansonsten kann man sowas in nem try-catch verschlucken...


----------



## Max020101 (14. Apr 2017)

Also ich habe einen runnable Java File erstellt und gestartet. Und beim ausführen über die Eclipse Konsole hat es funktioniert und dann mit runnable File nicht mehr.


----------



## Max020101 (14. Apr 2017)

mrBrown hat gesagt.:


> Ansonsten kann man sowas in nem try-catch verschlucken...


Was meinst du damit?


----------



## mrBrown (14. Apr 2017)

Max020101 hat gesagt.:


> Was meinst du damit?


In irgendeinem catch die Exception fangen, aber nicht sinnvoll ausgeben, dann bekommt man nichts davon mit


----------



## Max020101 (14. Apr 2017)

Ne, dass ist nicht der Fall. Sonst noch eine andere Idee woran es liegen könnte?


----------



## mrBrown (14. Apr 2017)

Bei den spärlich Informationen ist das nur Raten: Ich kaufe mal ein B und sage ein Bit ist gekippt.

*Was* fügt ihr denn dem Frame hinzu, was angezeigt werden sollte?


----------



## Max020101 (14. Apr 2017)

Also im Grunde genommen haben wir ein SpriteSheet aus dem wir die Bilder ausschneiden und sie dann in BufferedImages speichern. Diese werden dann in einer anderen Klasse aufgerufen.


----------



## mrBrown (14. Apr 2017)

Dann prüf doch einfach mal, was an welcher Stelle null ist


----------



## Max020101 (14. Apr 2017)

Das kann ich dir denke mal schon so sagen da ja nichts geladen wird muss er ganz am Anfang bei dem Laden des Bildes sein.


----------



## mrBrown (14. Apr 2017)

Denkst du das, oder weißt du das, weil du ein assert gesetzt hast und das noch mal ausgeführt hast?


----------



## Max020101 (14. Apr 2017)

Kannst du mir kurz erklären wie das funktioniert dann würde ich das eben überprüfen.


----------



## mrBrown (14. Apr 2017)

entweder mit `assert irgendieneBedingung;` und starten mit `-ea` oder händisch mit einem einfachem if und dann darin eine sout oder eine Exception schmeißen


----------



## Max020101 (14. Apr 2017)

Also der sagt mir das beim Einfügen der png datei der Error ist. Aber warum funktioniert es dann wenn ich das Programm über Eclipse starte?


----------



## mrBrown (14. Apr 2017)

Was meint denn "Einfügen der png datei"?


----------



## Max020101 (14. Apr 2017)

Das Sprite Sheet wird an diesem Punkt ausgelesen.


----------



## Max020101 (15. Apr 2017)

Werde mich jetzt weiter daran probieren eine Lösung zu finden. Wenn ich die Lösung finde dann schreibe ich das hierein. Danke für eure Hilfe.


----------



## krgewb (15. Apr 2017)

Max020101 hat gesagt.:


> Also ich habe einen runnable Java File erstellt und gestartet. Und beim ausführen über die Eclipse Konsole hat es funktioniert und dann mit runnable File nicht mehr.



Hast du es per Eingabeaufforderung gestartet? Z.B. wie folgt: java -jar sgdrfg.jar
In dem schwarzen Fenster mit weißer Schrift würden dann Stacktraces ausgegeben werden.

Woran es auch liegen kann:
Wenn du Bilder aus Unterverzeichnissen holst musst du Schrägstriche verwenden und nicht solche Sachen wie System.getProperty("file.separator");



Max020101 hat gesagt.:


> Wusste keine andere Lösung. Hättest du da eine Idee?


Bei mir funktioniert es. In dem Screenshot sieht man ein paar Packages. In dem Konstruktor von BilderNavigator steht die folgende Zeile:

```
taste1 = new ImageIcon(getClass().getResource("navigator/taste1.gif"));
```

In dem Screenshot lässt sich erkennen: Wenn man es so macht dann dürfen die Bilder nicht in einem übergeordneten Verzeichnis sein.
Deshalb bei mir:
Die Datei "BilderNavigator.java" in *de.hrw.dionarap.gui.bilder*
Die Bilddatei in *de.hrw.dionarap.gui.bilder.navigator*


----------



## Max020101 (15. Apr 2017)

Hab das Programm mal in cmd laufen lassen und da kommen dann Fehlermeldungen das er die Datei nicht gefunden hat. Allerdings ist das in dem Fall die Text Datei die die Welt darstellen soll. Die findet er irgendwie nicht.


----------



## mrBrown (15. Apr 2017)

Also doch ein StackTrace...

Wo liegt die Datei und wie wird sie eingeladen?


----------



## krgewb (15. Apr 2017)

Max020101 hat gesagt.:


> Hab das Programm mal in cmd laufen lassen und da kommen dann Fehlermeldungen das er die Datei nicht gefunden hat. Allerdings ist das in dem Fall die Text Datei die die Welt darstellen soll. Die findet er irgendwie nicht.



Ich hatte Probleme mit einer HTML-Datei.

```
String pfadname = System.getProperty("user.dir");
File file = new File(pfadname + "/src/de/hrw/dionarap/listener/spielbeschreibung/spielbeschreibung.htm");
```
Ich weiß nicht, wie man es machen muss damit es auch läuft wenn ich das Projekt als JAR exportiert habe.


----------



## Max020101 (15. Apr 2017)

Bei mir wird die Datei mit diesem Befehl ausgelesen.
 String file = Utils.loadFileAsString(path);
path ist hier die Variable für den Pfad der Datei.
Und sie liegt auch in einer Library des Programms


----------



## mrBrown (15. Apr 2017)

Diese Zeile sagt so ziemlich überhaupt nichts aus...

Das ist ähnlich aussagekräftig wie "nutz doch einfach `SuperCoolFileUtils.loadFileAsStringWhereverItMayBe(path)`"

##

Ich würde ja gern helfen, aber wenn man dir jede Kleinigkeit aus der Nase ziehen muss, ist das echt mühsam. Wir wissen auch nicht, nur mit der Info das irgendwas nicht funktioniert wie es soll, nicht direkt, was der Fehler ist und warum der auftritt.

Höchstwahrscheinlich liegt es dran, wie du die Resourcen lädst, die genau Stelle dazu sagt dir der StackTrace, die Zeile `String file = Utils.loadFileAsString(path);` ist ganz sicher nicht der Fehler. Die Lösung wird vermutlich ein getResource an der passenden Stelle sein, aber wie gesagt, mit den bisherigen Infos nicht sicher sagbar.


----------



## Max020101 (15. Apr 2017)

Ok werde mich da nochmal dran setzten das Problem zulösen danke auf jeden Falle. 
Wenn ich den Fehler gefunden hab dann schreibe ich das nochmal hier rein.


----------



## mrBrown (15. Apr 2017)

Du musst es gar nicht selbst allein lösen, aber wir können halt nicht raten, sondern nur mit dem helfen, was wir wissen 

z.B. der StackTrace, wo die Datei liegt, wie sie geladen wird...


----------



## Max020101 (16. Apr 2017)

Alles gut denke mal das ich den Fehler gefunden hab die Datei wurde in den falschen Ordner exportiert dann kann das Programm die Datei natürlich nicht finden


----------



## JuKu (18. Apr 2017)

JARs über deine IDE / per Konsole zu erstellen, ist keine gute Idee.
Setze lieber auf Maven!


----------



## JuKu (18. Apr 2017)

Ich hatte mal zu Maven ein Tutorial geschrieben:

Teil 1
Teil 2
JAR mit allen dependencies


----------



## krgewb (18. Apr 2017)

Max020101 hat gesagt.:


> [...]die Datei wurde in den falschen Ordner exportiert dann kann das Programm die Datei natürlich nicht finden


Wie ist denn das passiert?


----------

