# BlueJ: .jar Problem



## kpj (12. Dez 2009)

Hi,
derzeit müssen wir in der Schule ein Spiel programmieren,
also hab ich das bis jetzt auch gemacht.
Aber nun habe ich ein Problem: wenn ich mit BlueJ meine Klasse als .jar exportieren will (das geht noch), und diese dann starten will, geht es nicht.
Es öffnet sich, schließt sich wieder, und es erscheint diese Fehlermeldung:
"Die Java-JAR-Datei "Shot.jar" konnte nicht geöffnet werden.
Überprüfen Sie die Konsole auf mögliche Fehlermeldungen"
Hier mein Code:

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.awt.AlphaComposite;
 
public class Fenster
extends JApplet
implements KeyListener, Runnable
{
    private int keycode = 0;
    private int keymod = 0;
    private boolean appletSizeChanged=true;
    public static int appletWidth=800;
    public static int appletHeight=600;
    public Thread t;
    
    private int waagerecht=400;
    private int senkrecht=0;
    private int waagerechtOLD=250;
    private int senkrechtOLD=250;
    private int bombe_waagerecht=250;
    private int bombe_senkrecht=250;
    private int bombe2_waagerecht=250;
    private int bombe2_senkrecht=250;
    private int schuss_waagerecht=1000;
    private int schuss_senkrecht=1000;
    private int shot=0;
    private int shot2=0;
    private String R="";
    private int points=0;
    private int kollidiert=0;
    private int RUNDE=1;
    private int oneRUNDE=0;
    private int scroll=-200;
    private int oneU=0;
    private int oldU=0;
    
    private int GameOver=3;
    
    private int weg=100;
    private int ende=0;
    private String ich="";
    private String du="";
    private int king_waagerecht=440;
    private int king_senkrecht=0;
 
    private int[] gegner_waagerecht;
    private int[] gegner_senkrecht;
    
    public Fenster()
    {
        gegner_waagerecht=new int[100]; 
        gegner_senkrecht=new int[100];
        
        for(int u=0;u<100;u++)
        {
            gegner_waagerecht[u]=350;
            gegner_senkrecht[u]=350;
        }
    }
 
    
    public void init()
    {
        this.addKeyListener(this);
        t = new Thread(this);
        t.start();
        
        try {
            t.sleep(60000);
            } catch (InterruptedException e) {}
        
        intro();
        gegner();
    }
    
    public void run()
    {
        while(true)
        {
            Dimension appletSize = this.getSize();
            if(appletHeight!=appletSize.height||appletWidth!=appletSize.width)
            {
                appletHeight = appletSize.height;
                appletWidth = appletSize.width;
                appletSizeChanged=true;
                repaint();
            }
            else
            {
                appletSizeChanged=false;
            }
            repaint();
            try {
            t.sleep((int)(1000/(30)));//=1/30s
            } catch (InterruptedException e) {}
        }
    }
    
    public void keyPressed(KeyEvent e)
    {
        keycode=e.getKeyCode();
        keymod=e.getModifiersEx();
        System.out.println(keycode+" - "+keymod);
        
        if(keycode==37)
        {
            waagerechtOLD=waagerecht;
            waagerecht=waagerecht-20;
        }
        else if(keycode==39)
        {
            waagerechtOLD=waagerecht;
            waagerecht=waagerecht+20;   
        }
        if(keycode==38)
        {
            senkrechtOLD=senkrecht;
            senkrecht=senkrecht-20;
        }
        else if(keycode==40)
        {
            senkrechtOLD=senkrecht;
            senkrecht=senkrecht+20;   
        }
        
        
        if(keycode==89)
        {
            shot=1;
        }
        if(keycode==88)
        {
            shot2=1;
        }
        
        
        if(keycode==87)
        {            
            R="O";
            schuss();
        }
        if(keycode==83)
        {
            R="U";
            schuss();
        }
        if(keycode==68)
        {
            R="R";
            schuss();
        }
        if(keycode==65)
        {
            R="L";
            schuss();
        }
    }
    
    public void schuss()
    {
        schuss_waagerecht=waagerecht+5;
        schuss_senkrecht=senkrecht+5;
    }
    
    public void keyReleased(KeyEvent e)
    {
        keycode=0;
    }
    
    public void keyTyped(KeyEvent e)
    {
        
    }
    
    public void gegner()
    {
        for(int u=1;u<=RUNDE;u++)
        {
            int WuS=0;
            WuS=(int)Math.round(Math.random());
            if(WuS==0)
            {
                int OuU=0;
                OuU=(int)Math.round(Math.random());
                if(OuU==0)
                {
                gegner_waagerecht[u]=gegner_waagerecht[u]+20;
                }
                else if(OuU==1)
                {
                gegner_waagerecht[u]=gegner_waagerecht[u]-20;
                }
            }
            else if(WuS==1)
            {
                int OuU=0;
                OuU=(int)Math.round(Math.random());
                if(OuU==0)
                {
                gegner_senkrecht[u]=gegner_senkrecht[u]+20;
                }
                else if(OuU==1)
                {
                gegner_senkrecht[u]=gegner_senkrecht[u]-20;
                }
            }
            
            if(gegner_waagerecht[u]<0)
            {
                gegner_waagerecht[u]=gegner_waagerecht[u]+20;
            }
            if(gegner_senkrecht[u]<20)
            {
                gegner_senkrecht[u]=gegner_senkrecht[u]+20;
            }
            if(gegner_waagerecht[u]>appletWidth)
            {
                gegner_waagerecht[u]=gegner_waagerecht[u]-20;
            }
            if(gegner_senkrecht[u]>appletHeight)
            {
                gegner_senkrecht[u]=gegner_senkrecht[u]-20;
            }
        }
        
        try
        {
            t.sleep(70);
        }
        catch(InterruptedException e) {}
        gegner();
    }
    
    public void schuss_kollision()
    {
        for (int u=1;u<=RUNDE;u++)
        {
            if (gegner_waagerecht[u]+20 > schuss_waagerecht && gegner_waagerecht[u] < schuss_waagerecht+8)
            {
                if (gegner_senkrecht[u]+20 > schuss_senkrecht && gegner_senkrecht[u] < schuss_senkrecht+8)
                {
                    kollidiert++;
                    if(kollidiert==RUNDE)
                    {
                    RUNDE++;
                    kollidiert=0;
                    }
                    schuss_waagerecht=1000;
                    schuss_senkrecht=1000;
                    
                    try
                    {
                        t.sleep(70);
                    }
                    catch(InterruptedException e) {}
                }
            }
        }
    }
    
    public void bomben_kollision()
    {
        for (int u=1;u<=RUNDE;u++)
        {
            if (gegner_waagerecht[u]+20 > bombe_waagerecht && gegner_waagerecht[u] < bombe_waagerecht+10)
            {
                if (gegner_senkrecht[u]+20 > bombe_senkrecht && gegner_senkrecht[u] < bombe_senkrecht+10)
                {
                    kollidiert++;
                    if(kollidiert==RUNDE)
                    {
                    RUNDE++;
                    kollidiert=0;
                    }
                    bombe_waagerecht=1000;
                    bombe_senkrecht=1000;
                    
                    try
                    {
                        t.sleep(70);
                    }
                    catch(InterruptedException e) {}      
                }
            }
        }
    }
    
    public void bomben2_kollision()
    {
        for (int u=1;u<=RUNDE;u++)
        {
            if (gegner_waagerecht[u]+20 > bombe2_waagerecht && gegner_waagerecht[u] < bombe2_waagerecht+10)
            {
                if (gegner_senkrecht[u]+20 > bombe2_senkrecht && gegner_senkrecht[u] < bombe2_senkrecht+10)
                {
                    kollidiert++;
                    if(kollidiert==RUNDE)
                    {
                    RUNDE++;
                    kollidiert=0;
                    }
                    bombe2_waagerecht=1000;
                    bombe2_senkrecht=1000;
                    
                    try
                    {
                        t.sleep(70);
                    }
                    catch(InterruptedException e) {}      
                }
            }
        }
    }
    
    public void meine_kollision()
    {
        for (int u=1;u<=RUNDE;u++)
        {
            if (gegner_waagerecht[u]+20 > waagerecht && gegner_waagerecht[u] < waagerecht+20)
            {
                if (gegner_senkrecht[u]+20 > senkrecht && gegner_senkrecht[u] < senkrecht+20)
                {
 
                    GameOver=1;
                    
                    try
                    {
                        t.sleep(70);
                    }
                    catch(InterruptedException e) {}
                }
            }
        }
    }
    
 
    public void paint(Graphics g)
    {
        g.setColor(Color.white);
        g.fillRect(0, 0, appletWidth, appletHeight);
        if (keycode==10)
        {
            g.setColor(Color.red);  
        }
        else
        {
            g.setColor(Color.blue);
        }
        repaint();
        
        
        if(shot!=1)
        {
            bombe_waagerecht=waagerecht;
            bombe_senkrecht=senkrecht;
        }
        if(shot2!=1)
        {
            bombe2_waagerecht=waagerecht;
            bombe2_senkrecht=senkrecht;
        }
        
        if(GameOver==0)
        {
            g.fillRect(waagerecht, senkrecht, 20, 20);
            g.setColor(Color.red);
            g.fillRect(bombe_waagerecht, bombe_senkrecht+10, 10, 10);
            g.setColor(Color.red);
            g.fillRect(bombe2_waagerecht+10, bombe2_senkrecht+10, 10, 10);
            g.setColor(Color.black);
            g.fillRect(schuss_waagerecht, schuss_senkrecht, 8, 8);
            
            for(int u=1;u<=RUNDE;u++)
            {
            g.setColor(Color.green);
            g.fillRect(gegner_waagerecht[u], gegner_senkrecht[u], 20, 20);
            }
            
            g.setColor(Color.black);
            g.drawString("Runde: "+RUNDE, 50, 38);
            g.drawString("-----------", 50, 50);
            g.drawString("Steuerung: Pfeiltasten", 50, 62);
            g.drawString("Schießen: WASD", 50, 74);
            g.drawString("Bomben legen: Y/X", 50, 86);
            
            if (R=="O")
            {
            schuss_senkrecht--; 
            }
            if (R=="U")
            {
            schuss_senkrecht++; 
            }
            if (R=="R")
            {
            schuss_waagerecht++; 
            }
            if (R=="L")
            {
            schuss_waagerecht--; 
            }
            
            schuss_kollision();
            meine_kollision();
            bomben_kollision();
            bomben2_kollision();
        }
        else if(GameOver==3)
        {
            story(g);
            if(ende==1)
            {
                Font a = new Font("TimesRoman", Font.BOLD, 40);
                Font b = new Font("TimesRoman", Font.BOLD, 20);
                Font c = new Font("TimesRoman", Font.BOLD, 60);
                g.setColor(Color.black);
                g.setFont(a);
                g.drawString("KPJ", 100, 300);
                g.setFont(b);
                g.drawString("presents", 100, 320);
                g.setFont(c);
                g.drawString("Vogel-Shooter", 100, 500);
            }
        }
        else
        {
            Font f = new Font("TimesRoman", Font.BOLD + Font.ITALIC, 70);
            Font d = new Font("TimesRoman", Font.BOLD, 30);
            Font s = new Font("TimesRoman", Font.BOLD, 18);
            g.setFont(f);
            g.setColor(Color.black);
            g.drawString("GAMEOVER",300,350);
            g.setFont(d);
            g.drawString("Runde: "+RUNDE,300,400);
            g.setFont(s);
            g.drawString("Scripting: KPJ", 30, scroll);
            g.drawString("Graphics: KPJ", 30, scroll+20);
            g.drawString("Idea: KPJ", 30, scroll+40);
            g.drawString("Director: KPJ", 30, scroll+60);
            g.drawString("Co-Director: KPJ", 30, scroll+80);
            g.drawString("Designer: KPJ", 30, scroll+100);
            g.drawString("Tester: KPJ", 30, scroll+120);
            g.drawString("Assisstent: KPJ", 30, scroll+140);
            g.drawString("Logistics: KPJ", 30, scroll+160);
            scroll++;
            try {t.sleep(10);} catch (InterruptedException e) {}
            if (scroll==700)
            {
                scroll=-200;
            }
        }
    }
    
    public void story (Graphics g)
    {
        Font w = new Font("Helvetica", Font.BOLD, 25);
        Font l = new Font("Helvetica", Font.BOLD, 15);
        g.setColor(Color.black);
        g.setFont(w);
        g.drawString("Eines Tages wurde die Menschheit von Vögeln angegriffen",100,weg);
        g.drawString("Und es gab nur noch eine Möglichkeit die Erde zu retten",100,weg-200);
        g.drawString("Dich...",100,weg-400);
        g.setFont(l);
        System.out.println(weg);
        weg++;
        if(weg>800)
        {
            g.setColor(Color.blue);
            g.fillRect(waagerecht, senkrecht, 20, 20);
            g.setColor(Color.yellow);
            g.fillRect(king_waagerecht, king_senkrecht, 20, 20);
            if(senkrecht<200)
            {
                senkrecht++;
                king_senkrecht=senkrecht;
            }
            else
            {
                g.setColor(Color.black);
                g.drawString(du ,400, 176);
                g.drawString(ich ,360, 240);
                
                if(weg==1050)
                {
                    du="Die Welt ist in Gefahr";
                    ich="";
                }
                if(weg==1100)
                {
                    du="";
                    ich="Ich weiß, diese Vögel setzen uns schwer zu...";
                }
                if(weg==1150)
                {
                    du="Es gibt nur eine Möglichkeit -";
                    ich="";
                }
                if(weg==1200)
                {
                    du="";
                    ich="Ich werde gehen, ich muss unser Land verteidigen";
                }
                if(weg==1250)
                {
                    du="Nein, gehe nicht, es werden sich andere finden lassen";
                    ich="";
                }
                if(weg==1300)
                {
                    du="";
                    ich="Ich muss, alle Hoffnungen beruhen auf mir";
                }
                if(weg==1350)
                {
                    du="Wähle deinen Weg weise mein Sohne, weise...";
                    ich="";
                }
                if(weg>1450)
                {
                    king_waagerecht++; 
                }
                if(weg>1600 && weg<1800)
                {
                    du="";
                    senkrecht++; 
                }
                if(weg>1800)
                {
                    String last="Dies ist meine Bestimmung, ich muss und darf mein Land nicht enttäuschen";
                    g.drawString(last, waagerecht-200, senkrecht-30);
                    try{t.sleep(1000);}catch(InterruptedException e){}
                    last="";
                    ende=1;
                }
            }
            try{t.sleep(25);}catch(InterruptedException e){}
        }
        try{t.sleep(10);}catch(InterruptedException e){}
    }
 
    public void intro()
    {
        GameOver=0;
    }
 
    public static void main(String args[])
    {
        Frame appletFrame = new Frame("Vogel-Shooter");
        appletFrame.setLayout(new GridLayout(1,0));// The frame needs a layout manager, use the GridLayout to maximize the applet size to the frame.
        appletFrame.setSize(new Dimension(appletWidth-1, appletHeight+22-1));
        appletFrame.setVisible(true);// Mache den Frame auf dem Bildschirm sichtbar
        final Applet myApplet = new Fenster();// Erstelle eine Instanz des Applets (final damit in windowClosing auf stop() und destroy() zugegriffen werden kann)
        appletFrame.add(myApplet);// Fuege das Applet dem Frame hinzu
        myApplet.setSize(new Dimension(800, 600));
        myApplet.init();//Applet initialisieren und ...
        myApplet.start();//... starten
        appletFrame.setSize(new Dimension(appletWidth, appletHeight+22));
        appletFrame.addWindowListener(new WindowAdapter () {//Methode, die das schliessen des Fensters haendelt!
            public void windowClosing(WindowEvent e) {
                myApplet.stop();
                myApplet.destroy();
                System.exit(0);
            }
        });
    }
}
```

Keine Ahnung was das Problem sein könnte.;(
Danke schonmal im Voraus für eure Hilfe.
MfG kpj


----------



## Tobias (12. Dez 2009)

Ich kenn mich ja mit Applets nicht aus, aber die startet man doch eigentlich mittels einer HTML-Datei im Browser und nicht wie eine Applikation in der Konsole? Ansonsten: Knsole auf, in den richtigen Pfad wechseln, java -jar <DeinJarName>.jar, Fehlermeldung posten.


----------



## kpj (12. Dez 2009)

So geht es thx!!


----------

