&引用;发生了Java异常";
所以我尝试以jar的形式运行我的pacman项目(也尝试了runnable),我只得到了您在标题中看到的错误消息。它在eclipse/netbeans中运行得非常好,但在清理/构建时,我看到了以下警告: 注意:C:\Users\Lucas\Documents\Eclipse\PackMan\src\game\PackMan\GameData.java使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:未选中以获取详细信息 主类正确且已分配。有人知道我做错了什么吗? 这是我的GameData类&引用;发生了Java异常";,java,eclipse,netbeans,Java,Eclipse,Netbeans,所以我尝试以jar的形式运行我的pacman项目(也尝试了runnable),我只得到了您在标题中看到的错误消息。它在eclipse/netbeans中运行得非常好,但在清理/构建时,我看到了以下警告: 注意:C:\Users\Lucas\Documents\Eclipse\PackMan\src\game\PackMan\GameData.java使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:未选中以获取详细信息 主类正确且已分配。有人知道我做错了什么吗? 这是我的GameDa
public class GameData {
int mazeNo;
CopyOnWriteArrayList<Position> pills;
CopyOnWriteArrayList<Position> powerPills;
public MoverInfo packman;
public GhostInfo[] ghostInfos = new GhostInfo[4];
public int score;
Maze[] mazes;
boolean dead = false;
boolean win = false;
public GameData() {
mazes = new Maze[4];
// load mazes information
for (int m=0; m<4; m++) {
mazes[m] = new Maze(m);
}
setMaze(mazeNo);
}
private void setMaze(int m) {
packman = new MoverInfo(mazes[m].packmanPos);
for (int g=0; g<4; g++) {
ghostInfos[g] = new GhostInfo(mazes[m].ghostPos);
}
pills = new CopyOnWriteArrayList((List<Position>)(mazes[m].pills.clone()));
powerPills = new CopyOnWriteArrayList((List<Position>)(mazes[m].powerPills.clone()));
}
public void movePackMan(int reqDir) {
if (move(reqDir, packman)) {
packman.curDir = reqDir;
} else {
move(packman.curDir, packman);
}
}
private int wrap(int value, int incre, int max) {
return (value+max+incre)%max;
}
private boolean move(int reqDir, MoverInfo info) {
// current position of packman is (row, column)
int row = info.pos.row;
int column = info.pos.column;
int rows = mazes[mazeNo].rows;
int columns = mazes[mazeNo].columns;
int nrow = wrap(row, MoverInfo.DROW[reqDir], rows);
int ncol = wrap(column, MoverInfo.DCOL[reqDir], columns);
if (mazes[mazeNo].charAt(nrow, ncol) != '0') {
info.pos.row = nrow;
info.pos.column = ncol;
return true;
}
return false;
}
public void update() {
if (pills.contains(packman.pos)) {
pills.remove(packman.pos);
score += 5;
} else if (powerPills.contains(packman.pos)) {
powerPills.remove(packman.pos);
score += 50;
for (GhostInfo g:ghostInfos) {
g.edibleCountDown = 500;
}
}
for (GhostInfo g:ghostInfos) {
if (g.edibleCountDown > 0) {
if (touching(g.pos, packman.pos)) {
// eat the ghost and reset
score += 100;
g.curDir = g.reqDir = MoverInfo.LEFT;
g.pos.row = mazes[mazeNo].ghostPos.row;
g.pos.column = mazes[mazeNo].ghostPos.column;
g.edibleCountDown = 0;
}
g.edibleCountDown--;
} else {
if (touching(g.pos, packman.pos)) {
dead = true;
}
}
}
// level is cleared
if (pills.isEmpty() && powerPills.isEmpty()) {
mazeNo++;
if (mazeNo < 4) {
setMaze(mazeNo);
} else if (mazeNo == 5) {
win = true;
} else {
// game over
dead = true;
}
}
}
private boolean touching(Position a, Position b) {
return Math.abs(a.row-b.row) + Math.abs(a.column-b.column) < 3;
}
public void moveGhosts(int[] reqDirs) {
for (int i=0; i<4; i++) {
GhostInfo info = ghostInfos[i];
info.reqDir = reqDirs[i];
if (move(info.reqDir, info)) {
info.curDir = info.reqDir;
} else {
move(info.curDir, info);
}
}
}
public int getWidth() {
return mazes[mazeNo].width;
}
public int getHeight() {
return mazes[mazeNo].height;
}
public List<Integer> getPossibleDirs(Position pos) {
List<Integer> list = new ArrayList<>();
for (int d=0; d<4;d++) {
Position npos = getNextPositionInDir(pos, d);
if (mazes[mazeNo].charAt(npos.row, npos.column) != '0') {
list.add(d);
}
}
return list;
}
private Position getNextPositionInDir(Position pos, int d) {
int nrow = wrap(pos.row, MoverInfo.DROW[d], mazes[mazeNo].rows);
int ncol = wrap(pos.column, MoverInfo.DCOL[d], mazes[mazeNo].columns);
return new Position(nrow, ncol);
}
公共类游戏数据{
内马泽诺;
CopyOnWriteArrayList药丸;
CopyOnWriteArrayList powerPills;
公共运动信息包装工;
公共GhostInfo[]ghostInfos=新GhostInfo[4];
公众智力得分;
迷宫[]迷宫;
布尔死=假;
布尔赢=假;
公共游戏数据(){
迷宫=新迷宫[4];
//加载迷宫信息
对于(int m=0;请提供更多错误日志。如何运行jar文件?当您在命令提示符下运行java-jar yourJarFile.jar
时会发生什么?您没有看到堆栈跟踪吗?如果是,请将其发布到此处,并在源代码行上告诉我们。“因此,我正在尝试将pacman项目作为jar运行。”-那么你需要在你的问题中包括它。当我尝试JB建议的命令时,我得到了“no main manifest attribute”,但是在manifest中它确实说明了主类是什么