簡體   English   中英

無法創建可運行的JAR文件(Eclipse)

[英]Unable to create Runnable JAR file ( Eclipse )

我已經在eclipse中制作了一個小游戲,但是無法導出它。 每當我嘗試執行此操作時,都沒有啟動配置,經過一段時間的研究,我發現了如何創建配置,但是現在我得到了錯誤

“ JAR導出已完成並顯示警告。請參閱詳細信息以獲取更多信息。導出時已編譯警告:space / src / space / main.java Jar導出已完成,並出現問題。請參見詳細信息以獲取其他信息。在給定的啟動配置中找不到主要方法。”

我當前正在使用兩個類文件。 我已經讀過它,可能是因為它不是GUI,但是它不使用控制台並在窗口中顯示,所以我可能很困惑。 包裝空間;

import java.awt.Graphics;
public class main extends gameloop{

public void init(){
    setSize(1280,720);  
    Thread th = new Thread(this);
    th.start();
    offscreen = createImage(1280,720);
    d = offscreen.getGraphics();
    addKeyListener(this);
}
public void paint(Graphics g){
d.clearRect(0,0,1280,720);
d.drawImage(voidspace,0,0, this);
d.drawImage(wall,50,0,this);
d.drawImage(floor,100,0,this);



int[][] map=
    {
            {20,27,28,27,28,22},
            {24,11,14,14,17,31},
            {25,12,15,15,18,31},
            {26,13,16,16,19,31},
            {21,29,30,29,30,23}

    };
int rows = 5;
int cols = 6;
int i, j;

for (i = 0; i < rows; i++) {
  for (j = 0; j < cols; j++) {

    if(txtremode == 1){
        if(map[i][j] == 10){
        d.drawImage(voidspace,i*50,j*50,this);
    }
        if(map[i][j] == 11){
        d.drawImage(floor,i*50,j*50,this);
    }
        if(map[i][j] == 12){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 13){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 14){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 15){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 16){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 17){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 18){
            d.drawImage(floor,i*50,j*50,this);
        }
        if(map[i][j] == 19){
            d.drawImage(floor,i*50,j*50,this);
        }
        //corners
        if(map[i][j] == 20){
        d.drawImage(wall,i*50,j*50,this);

    }
        if(map[i][j] == 21){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 22){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 23){
            d.drawImage(wall,i*50,j*50,this);

        }

        //walls
        if(map[i][j] == 24){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 25){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 26){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 27){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 28){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 29){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 30){
            d.drawImage(wall,i*50,j*50,this);

        }
        if(map[i][j] == 31){
            d.drawImage(wall,i*50,j*50,this);

        }


    }



    //easteregg
    if(txtremode == 112109100){

        if(map[i][j] == 10){
        d.drawImage(voidspace,i*50,j*50,this);
        }

        //pmd-based floors(1-9)
        if(map[i][j] == 11){
        d.drawImage(pmdtlf,i*50,j*50,this);
        }
        if(map[i][j] == 12){
            d.drawImage(pmdtmf,i*50,j*50,this);
            }
        if(map[i][j] == 13){
            d.drawImage(pmdtrf,i*50,j*50,this);
            }
        if(map[i][j] == 14){
            d.drawImage(pmdmlf,i*50,j*50,this);
            }
        if(map[i][j] == 15){
            d.drawImage(pmdflr_base,i*50,j*50,this);
            }
        if(map[i][j] == 16){
            d.drawImage(pmdmrf,i*50,j*50,this);
            }
        if(map[i][j] == 17){
            d.drawImage(pmdblf,i*50,j*50,this);
            }
        if(map[i][j] == 18){
            d.drawImage(pmdbmf,i*50,j*50,this);
            }
        if(map[i][j] == 19){
            d.drawImage(pmdbrf,i*50,j*50,this);
            }

        //pmd-based corners
        if(map[i][j] == 20){
        d.drawImage(pmdtlc,i*50,j*50,this);
        }
        if(map[i][j] == 21){
            d.drawImage(pmdtrc,i*50,j*50,this);
            }
        if(map[i][j] == 22){
            d.drawImage(pmdblc,i*50,j*50,this);
            }
        if(map[i][j] == 23){
            d.drawImage(pmdbrc,i*50,j*50,this);
            }

        //pmd-based walls
        if(map[i][j] == 24){
            d.drawImage(pmdtw1,i*50,j*50,this);
            }
        if(map[i][j] == 25){
            d.drawImage(pmdtw2,i*50,j*50,this);
            }
        if(map[i][j] == 26){
            d.drawImage(pmdtw3,i*50,j*50,this);
            }
        if(map[i][j] == 27){
            d.drawImage(pmdlw1,i*50,j*50,this);
            }
        if(map[i][j] == 28){
            d.drawImage(pmdlw2,i*50,j*50,this);
            }
        if(map[i][j] == 29){
            d.drawImage(pmdrw1,i*50,j*50,this);
            }
        if(map[i][j] == 30){
            d.drawImage(pmdrw2,i*50,j*50,this);
        }
        if(map[i][j] == 31){
            d.drawImage(pmdbw1,i*50,j*50,this);
            }

    }
  }
}


g.drawImage(offscreen,0,0,this );

}
public void update(Graphics g){
paint (g);
}
}

Next主要由一個循環組成,但是我還沒有實現。

package space;

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

@SuppressWarnings("serial")
public class gameloop extends Applet implements Runnable, KeyListener{

    public int x,y,windowx,windowy,txtremode;
    public Image offscreen; 
    public Graphics d;
    public boolean up, down, left, right;
    public BufferedImage closed_door,floor,open_door,voidspace,wall; //default
    public BufferedImage pmdtiles,pmdtlc,pmdtrc,pmdblc,pmdbrc; //pmd-based wall corners
    public BufferedImage pmdtw1,pmdtw2,pmdtw3,pmdlw1,pmdlw2,pmdrw1,pmdrw2,pmdbw1;//pmd-based walls (w/ varients)
    public BufferedImage pmdtlf,pmdtmf,pmdtrf,pmdmlf,pmdflr_base,pmdmrf,pmdblf,pmdbmf,pmdbrf; //pmd-based floor(1-9)
    public int counter;
    public double counter2 = 0;
    public String score2 = "";
    public void run() {
        try {
        wall = ImageIO.read(new File("wall.png"));
        floor = ImageIO.read(new File("floor.png"));
        closed_door = ImageIO.read(new File("closed_door.png"));
        open_door = ImageIO.read(new File("open_door.png"));
        voidspace = ImageIO.read(new File("void.png"));
        pmdtiles = ImageIO.read(new File("pmdtiles.png"));

        //pmd-based wall corners
        pmdtlc = pmdtiles.getSubimage(5, 5, 50, 50);
        pmdtrc = pmdtiles.getSubimage(225, 5, 50, 50);
        pmdblc = pmdtiles.getSubimage(5, 170, 50, 50);
        pmdbrc = pmdtiles.getSubimage(225, 170, 50, 50);

        //pmd-based walls(w/varients)
        pmdtw1 = pmdtiles.getSubimage(60, 5, 50, 50);
        pmdtw2 = pmdtiles.getSubimage(115, 5, 50, 50);
        pmdtw3 = pmdtiles.getSubimage(170, 5, 50, 50);
        pmdlw1 = pmdtiles.getSubimage(5, 60, 50, 50);
        pmdlw2 = pmdtiles.getSubimage(5, 115, 50, 50);
        pmdrw1 = pmdtiles.getSubimage(225, 60, 50, 50);
        pmdrw2 = pmdtiles.getSubimage(225, 115, 50, 50);
        pmdbw1 = pmdtiles.getSubimage(170, 170, 50, 50);


        //pmd-based floors(1-9)

        pmdtlf = pmdtiles.getSubimage(289, 5, 50, 50);
        pmdtmf = pmdtiles.getSubimage(344, 5, 50, 50);
        pmdtrf = pmdtiles.getSubimage(399, 5, 50, 50);
        pmdmlf = pmdtiles.getSubimage(289, 60, 50, 50);
        pmdflr_base = pmdtiles.getSubimage(60, 60, 50, 50);
        pmdmrf = pmdtiles.getSubimage(399, 60, 50, 50);
        pmdblf = pmdtiles.getSubimage(289, 115, 50, 50);
        pmdbmf = pmdtiles.getSubimage(344, 115, 50, 50);
        pmdbrf = pmdtiles.getSubimage(399, 115, 50, 50);


        txtremode = 112109100;





    }

        catch (IOException el) {
        el.printStackTrace();
    }
        while(true){


            repaint();
        try {
            Thread.sleep(20);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        }
    }

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() ==37){
            left = true;
        }
        if(e.getKeyCode() ==38){
            up = true;
        }
        if(e.getKeyCode() ==39){
            right = true;
        }
        if(e.getKeyCode() ==40){
            down = true;
        }
         }
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == 37){
            left = false;
        }
        if(e.getKeyCode() == 38){
            up = false;
            counter2 = 4;
        }
        if(e.getKeyCode() == 39){
            right = false;
        }
        if(e.getKeyCode() == 40){
            down = false;

    }
}
public void keyTyped(KeyEvent e) {
}
}

在您的情況下,您在使用applet時不需要主要方法。

您可以嘗試執行以下操作:

  1. gameloop中刪除包“ space”或將其添加到
  2. 編譯代碼

    javac gameloop.java javac -cp。 main.java

  3. 以小程序的形式運行代碼

    appletviewer main.class

  4. 確保所有文件都放置到位(wall.png,floor.png等)

  5. 如果您希望能夠通過java命令運行main.java ,則需要在其中添加公共靜態void main(String [] arg) ,並確保創建main對象並調用它的init方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM