Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jar无法打开(在Eclipse中运行正常)_Java_Eclipse_Jar - Fatal编程技术网

Java Jar无法打开(在Eclipse中运行正常)

Java Jar无法打开(在Eclipse中运行正常),java,eclipse,jar,Java,Eclipse,Jar,所以我遇到了一个问题:为了好玩,我做了一个小GUI项目,它在Eclipse中运行良好,没有bug,一切正常 但是当我将它导出到一个可运行的Jar时,它就不再工作了。基本上什么都没有显示,甚至JFrame也没有。 我试着从其他项目制作JAR,它们运行良好,所以我的JavaJRE8V40应该不会有任何问题 这是你们的相关代码,评论是德语的,所以如果有未知的东西,请询问: 我的主要方法 我的整个GUI课程 这是我的画图方法,我在这里画图像 我还不能发布任何图像,但正如我所说,在Eclipse中,程序本

所以我遇到了一个问题:为了好玩,我做了一个小GUI项目,它在Eclipse中运行良好,没有bug,一切正常

但是当我将它导出到一个可运行的Jar时,它就不再工作了。基本上什么都没有显示,甚至JFrame也没有。 我试着从其他项目制作JAR,它们运行良好,所以我的JavaJRE8V40应该不会有任何问题

这是你们的相关代码,评论是德语的,所以如果有未知的东西,请询问:

我的主要方法

我的整个GUI课程

这是我的画图方法,我在这里画图像


我还不能发布任何图像,但正如我所说,在Eclipse中,程序本身似乎没有问题。

请发布有关如何编译和运行jar的信息。这似乎比代码本身更可能出现错误。此外,你如何开始你的计划?您可能应该使用java-jar.jar之类的东西来运行我刚才使用的jar,比如Windows中的常规.exe文件。嗯,我做了一点实验,发现了一个问题,我不知道为什么会这样,但我认为这是Java lol…:这与我的Gui类中的JButtons有关,我从一个.txt文件中获取x-行。使用http而不是本地文件更改accessso解决了这个问题,因此所有内容都按其应有的方式显示。
package paket;

import javax.swing.JFrame;

public class PokeMain {
    static int breite = 500;
    static int hoehe = 500;
    static PokeGui fenster;

    public static void main(String[] args) {
        fenster = new PokeGui();
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setResizable(true);
        fenster.setSize(breite, hoehe);
        fenster.setLocationRelativeTo(null);
        PokeGui.fight.requestFocus();//Fokus am Anfang
        fenster.requestFocusInWindow();//Fenster soll fokussierbar sein
        fenster.addKeyListener(new KeyHandler());
        fenster.setVisible(true);
    }

    public static void getFocus() {//sorgt dafuer, dass der Fokus auch nach Buttonklicks wieder im Fenster landen kann
        fenster.requestFocus();
    }
}
package paket;
import java.awt .*;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing .*;

public class PokeGui extends JFrame {
    static JPanel gesamtPanel, unteresPanel, aktionPanel, infoPanel, attackenPanel;//Container
    static JButton fight, bag, team, run;//Aktionen waehrend eines Kampfes
    static JButton attacke1, attacke2, attacke3, attacke4;
    BufferedReader br;//zum Lesen/Schreiben von Dateien
    static JProgressBar hpBar1, hpBar2;
    static JTextArea infoAnzeige;//einziges Element im infoPanel
    JLabel hp;
    Font schrift;
    PaintKampf pk;//Objekt der Klasse
    static int hp1 = 20, hp2 = 20;//1 = Spieler, 2 = Gegner

    public PokeGui() {
        super("Pokemon Java");

        Menueleiste ml = new Menueleiste();
        setJMenuBar(ml.actual_menu_bar);

        schrift = new Font("Calibri", Font.BOLD, 19);

        gesamtPanel = new JPanel();
        gesamtPanel.setLayout(new BorderLayout());
        gesamtPanel.setFocusable(true);
        gesamtPanel.setBounds(0, 0, PokeMain.breite, PokeMain.hoehe);
        add(gesamtPanel);

        pk = new PaintKampf();//Objekt der Klasse PaintKampf(JLabel)
        pk.setBounds(0, 0, 300, 300);
        gesamtPanel.add(pk);

        hpBar1 = new JProgressBar(0, hp1);//Meine HP
        hpBar1.setValue(hp1);
        hpBar1.setFont(schrift);
        hpBar1.setString("HP: " + hp1);
        hpBar1.setStringPainted(true);
        hpBar1.setForeground(Color.GREEN);
        hpBar1.setBackground(Color.WHITE);
        //      gesamtPanel.add(hpBar1,BorderLayout.NORTH);

        hpBar2 = new JProgressBar(0, hp2);//Gegner HP
        hpBar2.setValue(hp2);
        hpBar2.setString("HP: " + hp2);
        hpBar2.setStringPainted(true);
        hpBar2.setForeground(Color.GREEN);
        hpBar2.setBackground(Color.WHITE);
        //      gesamtPanel.add(hpBar2,BorderLayout.EAST);

        unteresPanel = new JPanel();//enthaelt Aktionen wahrend eines Kampfes sowie Textanzeige waehrenddessen
        unteresPanel.setLayout(new GridLayout(1, 0));
        gesamtPanel.add(unteresPanel, BorderLayout.SOUTH);

        infoAnzeige = new JTextArea("What should your POKéMON\ndo?");
        infoAnzeige.setLineWrap(false);
        infoAnzeige.setOpaque(false);//durchsichtig
        infoAnzeige.setEditable(false);
        infoAnzeige.setFocusable(false);
        infoAnzeige.setForeground(new Color(30, 60, 240));
        infoAnzeige.setFont(schrift);

        infoPanel = new JPanel();//ganz unten links
        infoPanel.add(infoAnzeige);//fuegt das JTextArea zum Panel hinzu
        infoPanel.setBackground(new Color(240, 255, 255));
        unteresPanel.add(infoPanel);

        aktionPanel = new JPanel();//ganz unten rechts
        aktionPanel.setLayout(new GridLayout(2, 0));
        aktionPanel.setFocusable(true);
        unteresPanel.add(aktionPanel);//fuegt es dem "uebergeordneten" Panel hinzu
        aktionPanel.addKeyListener(new KeyHandler());

        attackenPanel = new JPanel();//ganz unten rechts
        attackenPanel.setLayout(new GridLayout(2, 2));
        attackenPanel.setVisible(false);

        //Initialisierung der Buttons sowie Auslesen der Attackennamen
        try {
            br = new BufferedReader(new FileReader("src/Player_Attacken.txt"));
            attacke1 = new JButton(br.readLine());//liest aus der Datei die jeweilige Zeile aus und geht dann zur naechsten Zeile
            attacke2 = new JButton(br.readLine());
            attacke3 = new JButton(br.readLine());
            attacke4 = new JButton(br.readLine());
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException io) {
        }

        attacke1.setContentAreaFilled(false);//macht alles ausser dem Inhalt unsichtbar
        attacke1.setFont(schrift);
        attackenPanel.add(attacke1);
        attacke1.addKeyListener(new KeyHandler());
        attacke1.addActionListener(new ActionHandler_Kampf());

        attacke2.setContentAreaFilled(false);//macht alles ausser dem Inhalt unsichtbar
        attacke2.setFont(schrift);
        attackenPanel.add(attacke2);
        attacke2.addKeyListener(new KeyHandler());
        attacke2.addActionListener(new ActionHandler_Kampf());

        attacke3.setContentAreaFilled(false);//macht alles ausser dem Inhalt unsichtbar
        attacke3.setFont(schrift);
        attackenPanel.add(attacke3);
        attacke3.addKeyListener(new KeyHandler());
        attacke3.addActionListener(new ActionHandler_Kampf());

        attacke4.setContentAreaFilled(false);//macht alles ausser dem Inhalt unsichtbar
        attacke4.setFont(schrift);
        attackenPanel.add(attacke4);
        attacke4.addKeyListener(new KeyHandler());
        attacke4.addActionListener(new ActionHandler_Kampf());

        fight = new JButton("FIGHT");
        fight.setBorderPainted(false);//macht die Raender unsichtbar
        //      fight.setContentAreaFilled(false);//macht alles ausser dem Inhalt unsichtbar
        fight.setBackground(Color.RED);
        fight.setFont(schrift);
        aktionPanel.add(fight);
        fight.addKeyListener(new KeyHandler());
        fight.addActionListener(new ActionHandler_Kampf());

        bag = new JButton("BAG");
        bag.setFont(schrift);
        bag.setBorderPainted(false);
        bag.setBackground(new Color(218, 165, 32));
        aktionPanel.add(bag);
        bag.addKeyListener(new KeyHandler());
        bag.addActionListener(new ActionHandler_Kampf());

        team = new JButton("POKéMON");
        team.setFont(schrift);
        team.setBorderPainted(false);
        team.setBackground(new Color(50, 205, 50));
        aktionPanel.add(team);
        team.addKeyListener(new KeyHandler());
        team.addActionListener(new ActionHandler_Kampf());

        run = new JButton("RUN");
        run.setFont(schrift);
        run.setBorderPainted(false);
        run.setBackground(new Color(30, 144, 255));
        aktionPanel.add(run);
        run.addKeyListener(new KeyHandler());
        run.addActionListener(new ActionHandler_Kampf());

        //      gesamtPanel.setVisible(false);
    }
}
package paket;
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JLabel;

public class PaintKampf extends JLabel {
    Image kampf_hintergrund, P1, P2;//Hintergrund
    URL link, linkP1, linkP2;//URL des Bildes

    @Override
    public void paintComponent(Graphics g) {//paint-Methode
        super.paintComponent(g);
        try {
            link = new URL("http://i.imgur.com/pwkzzgv.png");
        }//holt sich das Bild von diesem Link
        catch (MalformedURLException e) {
            e.printStackTrace();
        }

        try {
            kampf_hintergrund = ImageIO.read(link);
        }//setzt das Bild gleich der URL
        catch (IOException e) {
            e.printStackTrace();
        }

        try {
            linkP1 = new URL("http://i.imgur.com/dg5xRUy.png");
        }//holt sich das Bild von diesem Link
        catch (MalformedURLException e) {
            e.printStackTrace();
        }

        try {
            P1 = ImageIO.read(linkP1);
        }//Spieler 1
        catch (IOException e) {
            e.printStackTrace();
        }

        try {
            linkP2 = new URL("http://i.imgur.com/fdZyPbr.png");
        }//holt sich das Bild von diesem Link
        catch (MalformedURLException e) {
            e.printStackTrace();
        }

        try {
            P2 = ImageIO.read(linkP2);
        }//Spieler 2
        catch (IOException e) {
            e.printStackTrace();
        }

        g.drawImage(kampf_hintergrund, 0, 0, null);//zeichnet das Hintergrundbild
        g.drawImage(P1, 0, 200, null);
        g.drawImage(P2, 350, 90, null);
    }
}