4

クリックするだけでゲームを実行する jar ファイルを作成しようとしています。ゲームが Java のデフォルトで割り当てられたヒープ メモリを超えているため、コードを -Xmx1000m で実行する必要があります。私はオンラインで調査してきましたが、残念ながら、デフォルトのメモリ以上でコードを楽しませるように jar ファイルに指示する方法はないようです。代わりに、ランタイムを使用して別のメイン メソッド内からコードをコンパイルする別のクラスを作成し、これを使用して jar ファイルを作成しました。

import java.io.*;
public class RuntimeExec{
public static void main(String[] args){
    try
    {
    Process process = Runtime.getRuntime().exec("java -Xmx1000m Controller");
    process.waitFor();
    int exitCode = process.exitValue();
    if(exitCode == 0) { /* success*/ }
    else { /*failed*/ }
    }
    catch (Exception e)
    {e.printStackTrace();}
}

}

これは機能しますが、jarに保存したクラスではなく、フォルダー内の既存のクラスを実行するため、機能すると思います。jar が 2 つの異なる jar 内でクラスを実行するか、メモリ ヒープの問題を回避できるようにする方法はありますか?

4

2 に答える 2

0

ユーザーに簡単なインストールを提供するための全体的なソリューションは、アプリをデプロイすることです。Java Web Startを使用します。アプリの RAM を設定したり、アプリを起動するためのデスクトップ ショートカットをインストールしたりできます。JWS は、(不十分に実装された) への呼び出しよりもはるかに堅牢ですexec


ただし、何らかの理由で JWS がこのアプリに適していない場合はIWantToBeBig、Jar に十分なメモリを確保するためのハックを参照してください (exec上記の使用方法と似ていますが、アプリを再起動するために使用する方がわずかに堅牢ProcessBuilderです。それはありません)。十分なメモリ)。

ユーザーがクリックで起動できるようにデスクトップ ショートカットを整理することは、読者の課題として残されています。

于 2013-04-16T02:39:46.237 に答える
0

それには多くの方法があります。

  1. あなたが言ったように、ゲームファイルをトリガーする別のJarファイルを用意することで
  2. @Perception が述べたように、ゲームを開始するバッチ ファイルを用意します。ただし、たとえばネットからダウンロードした場合、ユーザーはスクリプトを実行可能にするための権限を設定する必要があることに注意してください
  3. インストーラーをビルドします。Mac では、Java 7 用の Oracle Java App バンドラーを使用して、Java 6 用の Apple App バンドラーが.appファイルをビルドします。必要な権限が設定されていないため、再配布することはできません。アプリ ファイルの dmg をビルドします。これは配布に使用できます。Windows 用の同様のインストーラー

依存関係を適切にパッケージ化し、すべての JVM 引数を設定することができるため、3 番目の手法が最適です。

于 2013-04-15T19:43:43.237 に答える