0

友達との最初のアルファ テストのために、ゲームを実行可能な .jar ファイルに抽出しようとしています。ただし、エクスポートすると、空白のフレームを開くだけのアプリケーションが表示されます。Run within 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 クラス (私のマニフェストで選択されています) を実行可能なスレッドではなくしようとしました。割り当てられたメモリのどこにも到達しないため、ゲーム機能自体が実行されていないことはわかっています。

私のopenglライブラリはjarに抽出されます。Main クラスはプロセス パッケージ内にあります (デフォルト パッケージでも機能しませんでした)。

そして、私が言ったように、Main をメイン クラス (静的メインが含まれる) として割り当てるマニフェストから実行されています。

私はそれをかなりいじり、 Display クラスへのすべての呼び出しに絞り込みましたが、それらは Run in Eclipse から正常に動作します。(使用 System.exit(0); 関数呼び出しの後、フリーズした場合はそれらを削除しました。)

追加: 抽出された jar 内の lwjgl パッケージ内で、Display クラスが 8 つの個別のファイルに分割されていることもわかりました。ただし、opengl.* をインポートしています。

4

2 に答える 2

0

コードには隠れたバグがあります。main()例外がスローされた場合(そしておそらくネイティブライブラリをロードできなかったときに発生した)、それは表示されません。代わりに次のパターンを試してください。

public void main( String[] args ) {
    try {
        MainClass tool = new MainClass();
        tool.run( args );
    } catch( Exception e ) {
        e.printStackTrace();
    }
}

main()コードを新しいプライベートメソッドに移動しますrun()

commons-langクラスパスにある場合は、代わりExceptionUtils.printRootCauseStackTrace()にを使用してネストされた例外も表示します。

于 2011-10-25T14:57:50.410 に答える
0

私は原住民を瓶に詰めていませんでした。

于 2011-10-25T14:19:33.797 に答える