无法找到主要 class
Unable to locate main class
由于我的命令提示信息是葡萄牙语,我不知道确切的词,但是当我尝试执行 java -cp 时。 我的文件,它说无法定位或执行主要class。我搜索过,但由于我完全不熟悉编程,所以到目前为止我知道这可能是类路径的问题。这是我的:
一个 ShooterGame.class
文件已经用 javac -cp . FILE
正确编译。但是当我执行 java -cp . CLASS
时,它会显示该消息。
我该如何解决这个问题?谢谢
编辑:
是的,目录中有一个ShooterGame.class。更具体地说,有一个名为 game 的文件夹。在此文件夹中,您可以找到我刚才提到的 class。这里有 4 个完整的 classes 我可以 post。如果您需要它们中的任何一个,请发表评论(尽管我认为问题出在我们正在谈论的 class 中)。
ShooterGame.java(没有package
)
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.*;
import java.net.URL;
import java.io.IOException;
import java.awt.image.BufferedImage;
import java.awt.event.MouseEvent;
import game.input.InputHandler;
import game.player.Player;
import game.scenario.Block;
public class ShooterGame extends JFrame{
static int playerX=500;
static int playerY=520;
InputHandler input = new InputHandler(this);
public static Player player = new Player(playerX,playerY,50,50);
Block meteor = new Block(100,100,30,30);
public static void main(String[] args){
ShooterGame game = new ShooterGame();
game.run();
System.exit(0);
}
static int windowWidth = 1300;
static int windowHeight = 600;
static int fps = 30;
static BufferedImage backBuffer = new BufferedImage(windowWidth, windowHeight, BufferedImage.TYPE_INT_RGB);
public void run(){
boolean running = true;
initialize();
while(running){
long time = System.currentTimeMillis();
update();
draw();
time = (1000 / fps) - (System.currentTimeMillis() - time);
if (time > 0) {
try{
Thread.sleep(time);
}
catch(Exception e){};
};
}
}
public void initialize(){
setTitle("--- Shooter Game ---");
setSize(windowWidth, windowHeight);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void update(){
player.update(input);
meteor.update(0);
}
public void draw(){
Graphics g = getGraphics();
Graphics bbg = backBuffer.getGraphics();
bbg.setColor(Color.BLACK);
bbg.fillRect(0, 0, windowWidth, windowHeight);
player.Draw(bbg);
meteor.Draw(bbg);
g.drawImage(backBuffer, 0, 0, this);
}
}
根据你的代码和评论,我相信你需要
java -cp game ShooterGame
game
文件夹就是您的 ShooterGame.class
所在的位置。所以你也可以
cd game
java -cp . ShooterGame
现在,如果 ShooterGame
在 game
包中;那么就是
java -cp . game.ShooterGame
然后您将指向包含 game
的文件夹。
由于我的命令提示信息是葡萄牙语,我不知道确切的词,但是当我尝试执行 java -cp 时。 我的文件,它说无法定位或执行主要class。我搜索过,但由于我完全不熟悉编程,所以到目前为止我知道这可能是类路径的问题。这是我的:
一个 ShooterGame.class
文件已经用 javac -cp . FILE
正确编译。但是当我执行 java -cp . CLASS
时,它会显示该消息。
我该如何解决这个问题?谢谢
编辑: 是的,目录中有一个ShooterGame.class。更具体地说,有一个名为 game 的文件夹。在此文件夹中,您可以找到我刚才提到的 class。这里有 4 个完整的 classes 我可以 post。如果您需要它们中的任何一个,请发表评论(尽管我认为问题出在我们正在谈论的 class 中)。
ShooterGame.java(没有package
)
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.*;
import java.net.URL;
import java.io.IOException;
import java.awt.image.BufferedImage;
import java.awt.event.MouseEvent;
import game.input.InputHandler;
import game.player.Player;
import game.scenario.Block;
public class ShooterGame extends JFrame{
static int playerX=500;
static int playerY=520;
InputHandler input = new InputHandler(this);
public static Player player = new Player(playerX,playerY,50,50);
Block meteor = new Block(100,100,30,30);
public static void main(String[] args){
ShooterGame game = new ShooterGame();
game.run();
System.exit(0);
}
static int windowWidth = 1300;
static int windowHeight = 600;
static int fps = 30;
static BufferedImage backBuffer = new BufferedImage(windowWidth, windowHeight, BufferedImage.TYPE_INT_RGB);
public void run(){
boolean running = true;
initialize();
while(running){
long time = System.currentTimeMillis();
update();
draw();
time = (1000 / fps) - (System.currentTimeMillis() - time);
if (time > 0) {
try{
Thread.sleep(time);
}
catch(Exception e){};
};
}
}
public void initialize(){
setTitle("--- Shooter Game ---");
setSize(windowWidth, windowHeight);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void update(){
player.update(input);
meteor.update(0);
}
public void draw(){
Graphics g = getGraphics();
Graphics bbg = backBuffer.getGraphics();
bbg.setColor(Color.BLACK);
bbg.fillRect(0, 0, windowWidth, windowHeight);
player.Draw(bbg);
meteor.Draw(bbg);
g.drawImage(backBuffer, 0, 0, this);
}
}
根据你的代码和评论,我相信你需要
java -cp game ShooterGame
game
文件夹就是您的 ShooterGame.class
所在的位置。所以你也可以
cd game
java -cp . ShooterGame
现在,如果 ShooterGame
在 game
包中;那么就是
java -cp . game.ShooterGame
然后您将指向包含 game
的文件夹。