*.jar erstellen

Status
Nicht offen für weitere Antworten.

M4x0r

Aktives Mitglied
Hallo, ich habe das Quaxli tutorial durchgearbeitet und möchte nun gerne eine *.jar datei daraus erstellen (auch weil ich das noch nie gemacht habe ;) )
das funktioniert auch soweit. wenn ich das programm aber nun starte und die enter-taste drücke, mit der das spiel eigentlich starten soll, passiert rein garnichts.
Meine Vorgehensweise:
ich gehe in Eclipse auf File -> Export
Dann wähle ich Java -> Jar File ->NEXT
Jetzt aktiviere ich im src-Ordner "default-package"; ich lege den ort fest wo das jar erstellt werden soll. ->NEXT
Hier aktiviere ich garnichts. ->NEXT
Ich aktiviere bei "Seal some packages" das default package; als Main-Class wähle ich das Game-Panel. ->FINISH

durch google habe ich herausgefunden dass es vielleicht an den "externen bibliotheken" liegen kann? ich vermute mal dass damit die importe gemeint sind.
wie kann ich diese nun einbinden damit alles läuft? oder kann ich einen pfad zu diesen setzen?

Danke für die Hilfe.
 

Illuvatar

Top Contributor
Das heißt ermutlich, dass irgendeine Exception geworfen wird. Um den Fehler beheben zu können müsste man am besten mal wissen, was für eine ;)

Starte die jar mal über die Kommandozeile mit [c]java -jar (Dateiname).jar[/c], dann siehst du die Fehlerausgabe.
 

M4x0r

Aktives Mitglied
ah!
sehr gut :toll:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(ImageIO.java:1362)
        at GamePanel.loadPics(GamePanel.java:243)
        at GamePanel.doInitializations(GamePanel.java:78)
        at GamePanel.keyPressed(GamePanel.java:325)
        at java.awt.Component.processKeyEvent(Component.java:6092)
        at java.awt.Component.processEvent(Component.java:5911)
        at java.awt.Container.processEvent(Container.java:2023)
        at java.awt.Window.processEvent(Window.java:1816)
        at java.awt.Component.dispatchEventImpl(Component.java:4501)
        at java.awt.Container.dispatchEventImpl(Container.java:2081)
        at java.awt.Window.dispatchEventImpl(Window.java:2458)
        at java.awt.Component.dispatchEvent(Component.java:4331)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:70
4)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java
:969)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java
:841)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:668)
        at java.awt.Component.dispatchEventImpl(Component.java:4373)
        at java.awt.Container.dispatchEventImpl(Container.java:2081)
        at java.awt.Window.dispatchEventImpl(Window.java:2458)
        at java.awt.Component.dispatchEvent(Component.java:4331)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

das heisst wohl dass er die bilder nicht mehr findet.
was wahrscheinlich auch logisch ist , wenn ich so drüber nachdenke, weil ich die bilder ja im bin ordner abgelegt habe und eclipse ja beim erstellen einer jar datei den source und nicht die *.class dateien benutzt, richtig?
d.h. wo muss ich nun die bilder platzieren damit das funktioniert?
in meinem source hab ich das immer so benutzt:
Java:
BufferedImage[] clouds = this.loadPics("pics/cloud.gif", 1);
pics war der ordner im bin-verzeichnis
Dankeschön :)
 

Illuvatar

Top Contributor
Ich muss zugeben, ich hab Quaxlis Tutorial noch nie gelesen und weiß deshalb nicht was die loadPics-Methode genau macht. Es sieht aber aus, als würde es die ImageIO.read(File) - Methode verwenden.

Was du vermutlich machen willst, ist die Bilder mit in die .jar-Datei zu packen.
  • Um die Bilder mit Eclipse da rein zu kriegen, musst du zuerst die Bilder als Resourcen mit in dein Projekt importieren. In dem Export-Dialog gibt es dann glaub ich Optionen, solche Resourcen mit zu packen
  • Ich bin sowieso kein großer Fan von dem Jar-Export in Eclipse - ich mach das eigentlich immer in der Kommandozeile (bzw. mit einer Batch-Datei), da weiß ich dann genau was passiert. Dazu gibts was in den FAQ
  • Im Programm kannst du die Bilder dann natürlich nicht mehr aus Dateien laden, sondern musst sie aus dem jar holen. Mit
    Java:
    getClass().getClassLoader().getResourceAsStream(String)
    kriegst du eine Datei aus dem jar als InputStream. Einen InputStream kann dann wieder die ImageIO-Klasse verarbeiten (ImageIO.read(InputStream) )
 

Developer_X

Top Contributor
wenn du probleme damit hast, du kannst auch die Dateien und ressource librarys, alle in einen Zip packen, die entsprechende Manifestdatei schreiben, usw...
und dann das ganze in ".jar" abspeichern.

Mir wurde einst gesagt ".zip" und ".jar" seien äquivalent.
 

Apo

Bekanntes Mitglied
Also ich nutze immer die Eclipse Erweiterung FatJar zur Erstellung einer Jar aus Eclipse heraus. Da kann man sehr leicht einstellen, was man wie drin haben will. Ich bin damit mehr als zufrieden.
 

M4x0r

Aktives Mitglied
dankeschön :)

trotzdem immernoch das problem dass er die bilder anscheinend nicht findet.
die loadPics methode sieht so aus:
Java:
private BufferedImage[] loadPics(String path, int pics) {

		BufferedImage[] anim = new BufferedImage[pics];
		BufferedImage source = null;

		URL pic_url = getClass().getClassLoader().getResource(path);

		try {
			source = ImageIO.read(pic_url);
		} catch (IOException e) {
		}

		for (int x = 0; x < pics; x++) {
			anim[x] = source.getSubimage(x * source.getWidth() / pics, 0,
					source.getWidth() / pics, source.getHeight());
		}
		return anim;
	}

aber wie muss ich das jetzt mit dem
Java:
getClass().getClassLoader().getResourceAsStream(String)
machen? :bahnhof:
Sry, ich blick da nicht ganz durch.
Das mit FatJar hab ich auch mal probiert. aber das weiss ja auch nicht wo diese Bilder liegen oder :noe:
 

Illuvatar

Top Contributor
Kleines Beispiel, hilft vielleicht am meisten:
Java:
import java.awt.image.*;
import java.io.*;
import javax.swing.*;
import javax.imageio.*;

public class Example
{
  public static void main(String[] args)
  throws IOException
  {
    new Example().showImage();
  }
  
  public void showImage()
  throws IOException
  {
    InputStream imageStream = getClass().getResourceAsStream("LGIM0010.jpg");
    BufferedImage img = ImageIO.read(imageStream);
    imageStream.close();
    
    JFrame testFrame = new JFrame("Image");
    JLabel label = new JLabel(new ImageIcon(img));
    testFrame.add(label);
    testFrame.pack();
    testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    testFrame.setVisible(true);
  }
}

Dazu eine Manifest-Datei:
Code:
Main-Class: Example
(Leerzeile)
und die jar erstellen:
Code:
D:\jdk6\bin\jar cfm Example.jar manifest.txt Example.class LGIM0010.jpg
 

M4x0r

Aktives Mitglied
danke für eure tips leute,
aber ich brings immernoch nicht hin. :oops:

folgende dateien / ordner brauche ich in der jar

Code:
 Cloud.class
Drawable.class
Explosion.class
GamePanel.class
Goodie.class
Heli.class
Manifest.txt
Movable.class
pics
Rocket.class
sound
SoundLib.class
Sprite.class

Das liegt alles in einem Ordner. ich bin nun per cmd in diesen ordner gegangen und habe folgendes eingetippt:

Code:
jar -cfv test.jar Gamepanel.class
 Cloud.class Drawable.class Explosion.class Goodie.class Heli.class Movable.class Rocket.class Sound
Lib.class Sprite.class pics sound
mitsamt einer leerzeile am ende.
auch habe ich den Code der loadPics Methode folgendermaßen abgeändert:

Java:
private BufferedImage[] loadPics(String path, int pics) {

		BufferedImage[] anim = new BufferedImage[pics];
		BufferedImage source = null;

		

		try {
			source = ImageIO.read(getClass().getClassLoader().getResourceAsStream(path));
		} catch (IOException e) {
		}

		for (int x = 0; x < pics; x++) {
			anim[x] = source.getSubimage(x * source.getWidth() / pics, 0,
					source.getWidth() / pics, source.getHeight());
		}
		return anim;
	}

die jar wird erfolgreich erstellt nur bei doppelklick passiert nichts außer dass ein dumpfer ton erklingt...:eek:
langsam weiss ich auch nicht weiter.
 

L-ectron-X

Gesperrter Benutzer
Exceptions sollten wenigstens mit [c]printStackTrace()[/c] behandelt werden.
Starte dein Jar mal mit [c]java -jar test.jar[/c], dann sollte dir möglicherweise ein Fehler auf der Konsole ausgegeben werden.
 

leibimatZe

Mitglied
ich hatte neulich auf arbeit n kleines tool geschrieben und dann einfach die 3 bilder ins .jar verzeichnis gezogen (wie mit.zip) dann liefs wunderbar ;)
musst halt mit pfadangabe schaun was du angibst genau ob absolut oder nicht, eigtl solltest du wenn se im /bin liegen nur den dateinamen angeben dann kannst so wie ich sagte nachm erstellen der .jar über eclipse die bilder einfach per drag & drop reinziehn, is optisch net so toll aber sollte erstmal funktionieren.

grüße
 

M4x0r

Aktives Mitglied
hi,
leider schlug alles fehl.
Dennoch habe ich das ganze mal als ein BlueJ-Projekt erstellt.
Project -> Create JAR file -> Main Klasse wählen FERTIG ! und funktioniert einwandfrei :)
trotzdem danke an alle
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Pokemonklon erstellen Spiele- und Multimedia-Programmierung 7
M Mühle Spielfeld erstellen Spiele- und Multimedia-Programmierung 5
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
J CMD Output aktualisieren lassen statt neu erstellen? Spiele- und Multimedia-Programmierung 1
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
A Figur zentrieren und Spielwelt erstellen Spiele- und Multimedia-Programmierung 1
R Durch String Platform Game erstellen Spiele- und Multimedia-Programmierung 8
B Mit Swing eine Grafische Oberfläche erstellen Spiele- und Multimedia-Programmierung 1
L Zeichentrick erstellen Spiele- und Multimedia-Programmierung 6
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
ZoXlike Audio Server selbst erstellen Spiele- und Multimedia-Programmierung 11
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
K Umlaufbahn erstellen Spiele- und Multimedia-Programmierung 3
Anfänger2011 Wichtig: Grafik und Sprites erstellen Spiele- und Multimedia-Programmierung 1
D Ordner auf Desktop erstellen(Pc unabhängig) Spiele- und Multimedia-Programmierung 3
J Zufällige Zeichenfolge erstellen mit Möglichkeit der Subtraktion Spiele- und Multimedia-Programmierung 20
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
X Minecraft Wie kann ich eine Karte erstellen wie zb:(Bei Minecraft) Spiele- und Multimedia-Programmierung 1
A Spielemap erstellen Spiele- und Multimedia-Programmierung 13
S Einen Dialog zweier Personen erstellen (Textadventure) Spiele- und Multimedia-Programmierung 4
G Textadventure erstellen Spiele- und Multimedia-Programmierung 9
M Beste methode zur Map Erstellen in "Block" Games Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
windl Mediacenter Skin erstellen Spiele- und Multimedia-Programmierung 3
M OpenGL: Rectangle dort erstellen wo ich hintippe Spiele- und Multimedia-Programmierung 2
T LWJGL Gui erstellen Spiele- und Multimedia-Programmierung 7
N Level abspeichern/erstellen Spiele- und Multimedia-Programmierung 7
C Würfel erstellen und als Raum nutzen Spiele- und Multimedia-Programmierung 6
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
N Eigene Java 3D Engine erstellen. Spiele- und Multimedia-Programmierung 11
P Spiel HUD erstellen Spiele- und Multimedia-Programmierung 6
D ImageIcon erstellen Spiele- und Multimedia-Programmierung 2
S Applikation aus Applet erstellen Spiele- und Multimedia-Programmierung 6
M Spielkapitel/-Level erstellen/verwalten Spiele- und Multimedia-Programmierung 6
T mit Sketchup und Java [Spiel erstellen] Spiele- und Multimedia-Programmierung 4
S Spielfeld erstellen Spiele- und Multimedia-Programmierung 2
X Kartenspiel: Karten erstellen Spiele- und Multimedia-Programmierung 4
W Quiz mit Videos erstellen Spiele- und Multimedia-Programmierung 4
T Animiertes GIF erstellen Spiele- und Multimedia-Programmierung 2
E Sammelspiel erstellen? Spiele- und Multimedia-Programmierung 2
W Bitmap aus Datei erstellen Spiele- und Multimedia-Programmierung 5
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
Quaxli isometrische Sprites erstellen Spiele- und Multimedia-Programmierung 2
R Shapes erstellen Spiele- und Multimedia-Programmierung 8
D Jogl2 (Netbeans8) selbstlaufende Applikation erstellen Spiele- und Multimedia-Programmierung 4
S Grafik erstellen für Java Spiel Spiele- und Multimedia-Programmierung 8
V Java3D: HUD erstellen Spiele- und Multimedia-Programmierung 2
V Java3D: Ringe für Saturn erstellen Spiele- und Multimedia-Programmierung 8
S jfreechart, kursdiagramm erstellen Spiele- und Multimedia-Programmierung 22
S Video erstellen (AVI) Spiele- und Multimedia-Programmierung 3
T Erstellen eines ausdruckbaren Formulars Spiele- und Multimedia-Programmierung 5
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
O Image dynamisch erstellen. Spiele- und Multimedia-Programmierung 6
G GL4Java Animation erstellen Spiele- und Multimedia-Programmierung 2
C JPEG oder BMP Bild erstellen Spiele- und Multimedia-Programmierung 5
S 3d editor gesucht der 3ds files erstellen kann. Spiele- und Multimedia-Programmierung 4
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
T [jogl] GLU ab JSR-231 erstellen Spiele- und Multimedia-Programmierung 2
S Gif Animation aus Prog heraus erstellen Spiele- und Multimedia-Programmierung 11
S 3D Objekt erstellen und darstellen Spiele- und Multimedia-Programmierung 4
R JPEG aus HexString erstellen Spiele- und Multimedia-Programmierung 2
D mehrere Graphiken erstellen und ihre Position definieren Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben