Donnerstag, 26. Juni 2014

Bilder mit getResource() in Java laden für .jar s

Erst neulich stand ich wieder vor einem nervigem Problem. Ich wollte mit Eclipse eine .jar erstellen für einen kleines Spiel, das ich geschrieben hatte. Das Problem: Ich habe es einfach nicht hinbekommen mittels getRessources() den richtigen Pfad oder überhaupt den richtigen Aufruf anzugeben und die Bilder richtig zu laden. Im Internet gibt es zu diesem Thema bereits einige Informationen, auch auf StackOverflow, aber keine hatte bei mir irgendwie geholfen und dann half ich mir einfach selbst. 

Mein Problem: Ich hatte ein main-Package das einen resources-Ordner samt Bilder, sowie ein java-package mit dem Code und vielen weiteren unter Packages beinhaltete. In einem dieser unter Packages hatte ich nun eine Klasse ImageLoader, die für mich die Bilder laden sollte. Das funktionierte im Debugging soweit so gut. Also ich nun aber auf getResources() umstellen wollte, kam das Problem mit den Pfaden, den die alten Pfade, die mit mit new File("pfad") angegeben hatte gingen nicht mehr. Ich probierte unendlich viele Varianten, kam aber nicht drauf. Letztendlich war die Lösung folgende:

ImageLoader.class.getClassLoader().getResource("main/resources/" + imageName + ".png")

 Per ausprobieren fand ich heraus, dass der Befehl generell erstmal 

X.class.getClassLoader().getResource()

lautet wobei X = der Klassenname ist, in der das Bild geladen wird, in meinem Fall der ImageLoader. Das Problem war nun immer der Pfad, doch den kann man ganz einfach herausfinden. Man platziert einfach folgendes

System.out.println(ImageLoader.class.getClassLoader().getResource(""));

an der Stelle bevor man das Bild lädt. Debuggt man nun das Ganze, so erscheint auf der Konsole der entsprechende Klassen Pfad, was in meinem Fall einfach der bin-Ordner im Projekt-Ordner war. Mit diesem Wissen kann man nun einfach den Pfad ab den bin-Ordner fortsetzen. In meinem Fall war das der Packagename + der Ordnername: also "main/resources/" hängt man jetzt noch den Bildnamen an, wie bereits oben geschehen, so sollte es keine Probleme geben.

Sonntag, 22. Juni 2014

Visual Studio 2013 Projekt in Visual Studio 2012 öffnen

Erst neulich stand ich vor dem Problem, dass ich in Visual Studio 2012 ein Visual C++ Projekt mit Windows Forms öffnen wollte, dass ich zuvor auf einem anderem Rechner mit Visual Studio 13 erstellt hatte. Das Öffnen funktionierte soweit auch problemlos. Als ich es jedoch kompilieren wollte, kam es zu einigen Kompilierfehlern. Die Lösung für dieses Problem ist eigentlich recht simpel:

1. Öffne deine Visual Studio 13 Projektmappe mit Visual Studio 12.
2. Gehe oben in der Menüleiste auf "Projekt->Vorlage-Eigenschaften..."

3. Im sich öffnenden Fenster wähle Links "Allgemein"
4. Setze dann rechts das Plattformtoolset vom unbekannten "v112 Comiler" auf den "v110-Compiler" von Visual Studio 2012. 

5. Nun sollte das Programm wieder fehlerfrei debuggen.

Das ganze funktioniert eventuell auch für andere Projekte. Weitere Infos bzgl. der Kompatibilität gibt es bei Mircosoft: Link