我正在尝试将我的游戏提取到一个可运行的 .jar 文件中,以便在朋友中进行第一次 alpha 测试。但是,当我导出时,我得到一个只打开一个空白框架的应用程序。使用 Eclipse 中的运行可以正常工作。
这是我的静态主要内容:
public static void main(String[] args){
regular=new DisplayMode(800,600);
mainframe=new JFrame();
mainframe.setSize(new Dimension (regular.getWidth(), regular.getHeight()));
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
mainframe.setLocation(dim.width/2-(regular.getWidth()/2), dim.height/2-(regular.getHeight()/2));
ExecutorService exmain = Executors.newFixedThreadPool(1);
displaycanvas=new Canvas();
displaycanvas.setSize(regular.getWidth(), regular.getHeight());
mainframe.add(displaycanvas);
displaycanvas.setFocusable(true);
displaycanvas.requestFocus();
displaycanvas.setIgnoreRepaint(true);
mainframe.setVisible(true);
mainframe.setResizable(true);
Main datmain=new Main(displaycanvas, mainframe);
mainframe.addWindowListener(datmain.new maincloser(datmain));
mainframe.addComponentListener(datmain.new mainresize(datmain));
Thread mainthread= new Thread(datmain);
mainthread.run();
}
在你问之前,我确实尝试过使 Main 类(在我的清单中选择)不是一个可运行的线程,并且我确实尝试将所有内容简化为一个简单的 Display。我知道游戏功能本身没有运行,因为它永远不会到达我分配的内存附近的任何地方。
我的 opengl 库被提取到 jar 中。Main 类在 processes 包中(它也不适用于默认包)。
而且,就像我说的,它是从一个清单中运行的,该清单将 Main 指定为主类(静态 main 所在的类)。
我已经对其进行了相当多的修改,并将其范围缩小到对 Display 类的所有调用,即使它们在 Run in Eclipse 中运行良好。(使用 System.exit(0); 函数调用后,如果冻结,则将其删除。)
补充:我还发现在解压jar里面的lwjgl包里面,Display类被分成了8个独立的文件。但是,我正在导入 opengl.*。