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.
Bekomme leider beim Versuch mein Projekt in eine jar-datei zu exportieren:
Exported with complie warnigns: /Memory/src/de/Game.java
Resource '/Memory' does not exits.
Resource is out of sinc with the fiel system: '/Memory/graphics/card.jpg
Vielleicht kann mir ja jemand helfen. Verstehe nicht mal die Fehlermeldung
Du hast eine Datei des Workspaces von ausserhalb Eclipse verändert und nun beschwert sich Eclipse das es darüber nicht informiert wurde.
Klick das Projekt im Navigator/Project Explorer/Package Explorer an und drück F5 für einen Refresh.
ok. danke
das hat schonmal viel gebracht. er erstellt die datei nun , sagt aber er hat eine warnung:
unter den details steht nur
warning......
die Klasse Game ist offensichtilich betroffen.
Die Datei startet leider nicht.
Ein Warning-Dialog am Ende des Erstellens eines Jar weist eigentlich i.d.R. auf ganz normale Warnings im Code hin.
Das Refresh-Problem kann man auch "umgehen", wenn man unter Preferences - General - Workspace die Option Refresh automatically aktiviert. Man sollte aber dennoch wissen, was man tut. Eclipse sollte imho schon die Herrschaft über den Projektordner haben.
Warum dein Programm nicht startet, kann dir jetzt wohl niemand sagen. Das werden wohl Probleme im Code sein.
Das Problem habe ich "gelöst". Ich lade Bilder und irgendwie findet er die in der jar nicht, d.h ich muss in das Verzeichnis wo die jar drin liegt, die Ordner mit den Images nochmal reinkopieren. Wieso ist das so? habe eigentlich versucht die Pfade relativ zum Projektpfad anzugeben. Irgendwie findet er da die Bilder nicht.
Noch ein Problem: Unter Linux(Ubuntu) findet er die Images nichtmal, wenn ich sie zusätzlich, wie oben beschrieben extra reinkopiere.
Ich benutze vom Prinzip her folgenden quellcode zum Laden eines Images:
Code:
File file = new File("graphics"+File.separator+"img1.jpg");
BufferedImage img = new BufferedImage();
img = ImageIO.read(file);
Das geht über Class.getResource() oder Class.getResourceAsStream(). Was man halt braucht. Für mehr Fragen dazu kannst du auch hier im Forum schauen, die Frage wird ständig gestellt (eigentlich auch ein FAQ-Kandidat).
Wahrscheinlich ein Windows System? Der separator in einer URL ist immer '/', nicht '\'. Statt dem File.separator also '/'.
File.separator würde ich in einem Java Programm gar nicht verwenden, da java.io.File immer auch mit / funktioniert. Den separator char brauchst du dann erst, wenn du dem User einen Pfad in ihm vertrauter Syntax präsentieren willst.
habe File-separator durch / ersetzt, die Fehlermeldung bleibt.
dachte sowieso immer, dass File.separator die bessere Lösung ist, weil dann halt immer der Betriebssystem-Abhängige Fileseparator verwendet wird.
Ja, aber bei dem String, den man getSystemResource() übergibt, handelt es sich nicht um einen Pfad (siehe Dokumentation).
Zur Typkonsistenz: String erwartet, String erhalten, Compiler glücklich. Alle weiteren Fehler dann zur Laufzeit.
In deinem Beispiel muss das Verzeichnis "graphics" im Root des Jars sein. Also nicht in irgendwelchen src- oder sonstwas-Verzeichnissen, sondern ganz oben. Vielleicht stimmt da nochwas nicht.
In deinem Beispiel muss das Verzeichnis "graphics" im Root des Jars sein. Also nicht in irgendwelchen src- oder sonstwas-Verzeichnissen, sondern ganz oben. Vielleicht stimmt da nochwas nicht.
Das src Verzeichnis wird doch nicht ins jar exportiert, bzgw. ist dafür irrelevant. Der übergegbene "Pfad" muss einfach dem Package Namen + Resource entsprechen.
graphics muss in den Build Path, sonst kannst du es nicht über den Classloader laden.
Also entweder in src, oder zB den source folder splitten in src/java und src/resources
habe den ordner graphics in den ordner src kopiert, der Fehler bleibt.
Nur damit es keine Verständnisprobleme gibt: zur Zeit starte ich das Programm noch direkt aus eclipse ehraus, es ist also noch nicht in .jar umgewandelt. Das brauche ich ja auch sicher nicht machen, wenn es in eclipse schon nicht funktioniert.
edit: Wenn ich graphics in bin kopiere gehts. Habe graphics jetzt mal in src UND bin kopiert. Wenn ich jetzt daraus eine .jar mache, so startet diese wieder nicht, ich denke mal, weil er die Bilder wieder nicht laden kann, also der Fehler vom Anfang
Hast du denn inzwischen wie von musiKk beschrieben Classloader.getSystemResouce durch Class.getResource() oder Class.getResourceAsStream() ersetzt? Dann sollte der Fehler zumindest ein anderer sein.
Wieso passt der Pfad dann noch nicht? Mit dem anderen Befehl lädt er die Datei ja ordnungsgemäß, nur leider als .jar exportiert nicht mehr.
Das kann doch nicht so schwer sein. Gibts denn da keine Standardlösung?
Doch. Full Qualified Name, also "/"+ Package Name + "/" + Resouce
Bei Package Name ist '/' der Separtor. In deinem fall also (wenn ich deine Struktur richtig verstanden habe)
graphics ist ein Ordner direkt im Projektverzeichnis. So wie ich es oben schreibe geht es aber nicht. In eclipse läd er die Datei aber nicht wenn ichs in jar exportiere. Was hab ich denn nun falsch gemacht?
Mach mal die Jar-Datei mit dem zip-kompatiblen Packprogramm deiner Wahl auf und überzeuge dich von dieser Struktur. Ich habe es spaßeshalber auch nochmal ausprobiert und das geht genau so, wie hier beschrieben.
Das habe ich schon gemacht. in der jar-Datei befindet sich der ordner de mit den class-Datein und ein ordner graphics mit den Grafiken, ausserdem hab ich sicherheitshalber in den de-Ordner den graphics-Ordner auch nochmal reinkopiert.
ich war so dämlich und habe vergessen, dass ich an mehr als an einer Stelle im Quellcode Bilder lade ((
Grundsätzlich funktioniert es aber er lädt nicht alle Bilder. Ich lade wie gesagt an verschiedenen Stellen im Code Bilder. Am Anfang gehts, später nicht mehr.