【发布时间】:2013-05-22 21:51:04
【问题描述】:
我学习了大约 10 个不同的教程,但似乎没有一个能奏效,我的可运行 jar 文件无法正常工作。
当我在 Eclipse 中运行时,我的游戏运行良好,并且我能够将它变成一个可运行的 jar 文件,该文件仅在一两天前工作,并且没有改太多代码。当我尝试运行 .jar 时,我的屏幕底部会弹出一个 java 图标,但随后什么也没有发生。
这是我的启动器无法打开(如果我在没有启动器的情况下运行它可以正常工作),无论我使用终端还是 Eclipse 打开都没有错误。
package com.l3g3nds.threed;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class Launcher extends JFrame implements MouseListener, MouseMotionListener {
private static final long serialVersionUID = 1L;
protected JPanel window = new JPanel();
// private JButton play, options, help, quit, credits;
// private Rectangle rplay, roptions, rhelp, rquit, rcredits;
protected int buttonWidth = 120;
protected int buttonHeight = 40;
public Launcher(int id) {
JPanel panel = (JPanel) getContentPane();
JLabel label = new JLabel();
label.setIcon(new ImageIcon("res/Launcher/schoolbackground.png"));
System.out.println(Display.lScreen());
if (Display.lScreen() == 5)
label.setIcon(new ImageIcon("res/Launcher/quit1.png"));
if (Display.lScreen() == 4)
label.setIcon(new ImageIcon("res/Launcher/credits1.png"));
if (Display.lScreen() == 3)
label.setIcon(new ImageIcon("res/Launcher/options1.png"));
if (Display.lScreen() == 2)
label.setIcon(new ImageIcon("res/Launcher/help1.png"));
if (Display.lScreen() == 1)
label.setIcon(new ImageIcon("res/Launcher/beginrunning1.png"));
panel.add(label);
setUndecorated(true);
System.out.println("launched");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
pack();
setVisible(true);
addMouseListener(this);
addMouseMotionListener(this);
}
public void drawButtons() {
}
@Override
public void mouseClicked(MouseEvent e) {
int cx = e.getX();
int cy = e.getY();
if (cx >= 11 && cy >= 14 && cx <= 214 && cy <= 44) {
dispose();
new RunGame();
} else if (cx >= 11 && cy >= 66 && cx <= 70 && cy <= 96) {
//open help
} else if (cx >= 11 && cy >= 119 && cx <= 119 && cy <= 144) {
this.dispose();
new Options();
} else if (cx >= 11 && cy >= 170 && cx <= 114 && cy <= 200) {
//open credits
} else if (cx >= 11 && cy >= 222 && cx <= 74 && cy <= 254) {
System.exit(0);
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
int mx = e.getX();
int my = e.getY();
if (mx >= 11 && my >= 14 && mx <= 214 && my <= 44) {
if (Display.lScreen() != 1) {
Display.setlScreen(1);
new Launcher(1);
System.out.println("1");
}
} else if (mx >= 11 && my >= 66 && mx <= 70 && my <= 96) {
if (Display.lScreen() != 2) {
Display.setlScreen(2);
new Launcher(1);
System.out.println("2");
}
} else if (mx >= 11 && my >= 119 && mx <= 119 && my <= 144) {
if (Display.lScreen() != 3) {
Display.setlScreen(3);
new Launcher(1);
System.out.println("3");
}
} else if (mx >= 11 && my >= 170 && mx <= 114 && my <= 200) {
if (Display.lScreen() != 4) {
Display.setlScreen(4);
new Launcher(1);
System.out.println("4");
}
} else if (mx >= 11 && my >= 222 && mx <= 74 && my <= 254) {
if (Display.lScreen() != 5) {
Display.setlScreen(5);
new Launcher(1);
System.out.println("5");
}
}
else {
if (Display.lScreen() != 0) {
Display.setlScreen(0);
new Launcher(1);
System.out.println("0");
}
}
}
}
如果有帮助,我正在使用 mac...
这是我所采取的确切步骤的屏幕截图
我收到了一些警告(我认为它们只是因为未使用的变量,当我能够让我的 .jar 工作时,我早些时候收到了这条消息)
这似乎是我的屏幕顶部以及底部的 java 图标,但没有其他任何反应。
-谢谢
【问题讨论】:
-
但是您遗漏了最重要的信息。你说它在一两天前就起作用了,
"and have not changed too much code.",但你所做的最改变的实际上非常重要。那么......你到底改变了什么?如果没有更多这些关键信息,我认为我们注定无法为您提供帮助。请注意,您可以删除您发布的图片,因为它们根本无法帮助您找到问题的根源。 -
您最近是否向您的应用添加了任何 jar 或类?
-
从命令行运行jar文件(使用java -jar theJar.jar),看看是否报错。
-
我收到此错误“无法访问 jarfile {Run.jar}”
-
编辑您的问题并发布剔除、完整和准确的错误及其堆栈跟踪。