简体   繁体   English

无法创建可运行的JAR文件(Eclipse)

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

I've made a small game in eclipse but I'm unable to export it. 我已经在eclipse中制作了一个小游戏,但是无法导出它。 Whenever I try to do so, there are no launch configurations, after quite some time of toying around, I found out how to create one, but now I get the error 每当我尝试执行此操作时,都没有启动配置,经过一段时间的研究,我发现了如何创建配置,但是现在我得到了错误

"JAR export finished with warnings. See details for additional information. Exported with compile warnings: space/src/space/main.java Jar export finished with problems. See details for additional information. Could not find main method from given launch configuration." “ JAR导出已完成并显示警告。请参阅详细信息以获取更多信息。导出时已编译警告:space / src / space / main.java Jar导出已完成,并出现问题。请参见详细信息以获取其他信息。在给定的启动配置中找不到主要方法。”

I'm currently using two class files. 我当前正在使用两个类文件。 I've read that it may be because it's not a GUI, but it doesn't use the console and displays in a window, so I'm probably just confused. 我已经读过它,可能是因为它不是GUI,但是它不使用控制台并在窗口中显示,所以我可能很困惑。 package space; 包装空间;

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 consists mostly of a loop, but I haven't implemented that yet. 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) {
}
}

In your case, you don't need main method as you are working with applet. 在您的情况下,您在使用applet时不需要主要方法。

What you can try is to do following: 您可以尝试执行以下操作:

  1. either remove package "space" from gameloop or add it to main class gameloop中删除包“ space”或将其添加到
  2. compile the code 编译代码

    javac gameloop.java javac -cp . javac gameloop.java javac -cp。 main.java main.java

  3. run the code as applet 以小程序的形式运行代码

    appletviewer main.class appletviewer main.class

  4. make sure to have all files in place (wall.png, floor.png, etc.) 确保所有文件都放置到位(wall.png,floor.png等)

  5. If you want to be able to run main.java via java command, you will need to add public static void main(String [] arg) into it and make sure to create main object and call it's init method. 如果您希望能够通过java命令运行main.java ,则需要在其中添加公共静态void main(String [] arg) ,并确保创建main对象并调用它的init方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM