0

私は先月 Java アプレット ゲームを開発しており、今はそれを HTML ページに埋め込もうとしています。次のコードに従って .jar に既に署名しているにもかかわらず、毎回NullPointerExceptionを取得しています。

keytool -genkey -keystore myKeyStore -alias me
keytool -selfcert -keystore myKeyStore -alias me
jarsigner -keystore myKeyStore Franky.jar me

現在作業しているこのページで実行しようとすると、http: //zeytpruebas.prosopin.com/index.html .jar がまだ署名されていない/作成者が不明なようです。シンプルな HelloWorld アプレットでテストしたため、私のゲームは Eclipse IDE 経由でエラーなしで実行され、埋め込みコードもエラーなしです。

それ以外の場合は、私の埋め込みコードがあります:

<applet code="franky_BF38/Principal.class" archive="Franky.jar" width="800" height="480"></applet>

一方、私の .jar は次のようになります。

オーディオ (フォルダ)

· franky_theme.au

画像(フォルダ)

・1.jpg

・2.jpg

レベル (フォルダ)

· map1.txt

· map2.txt

franky_BF38 (クラスのフォルダー)

· Principal.class (メイン クラス)

・Enemy.class

· Player.class (...)

META-INF (フォルダ)

・MANIFEST.MF

・ME.DSA

・ME.SF

すべてのアプレット スレッドを確認しましたが、応答がありません。コードやアーカイブが必要な場合は、お気軽にお問い合わせください。どんな助けでも大歓迎です。

編集:私のページにJavaコンソールによるスレッドダンプを追加しました(長い拡張子のため):ダンプ

EDIT 02/05/2013 : _constructor does not initialize fields [imagen_actual、fondo、franky_salto...]_ の警告を参照して、クラス Principal の下に次のコードがあります。

private Image imagen, franky, franky_agachado, franky_salto, fondo,
        imagen_actual, pacifista;
public static Image tilegrassTop, tilegrassBot, tilegrassLeft,
        tilegrassRight, tiledirt, tileocean;
private Graphics graficos;
private URL direccion;
AudioClip disparo, tema;

次に、次のように init() メソッドでこれらの変数に値を直接割り当てます (初期化なし)。

try {
        direccion = getDocumentBase();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    franky = getImage(direccion, "imagenes/franky_estatico.png");
    franky_agachado = getImage(direccion, "imagenes/franky_sentado.png");
    franky_salto = getImage(direccion, "imagenes/franky_salto.png");
    imagen_actual = franky;
    pacifista = getImage(direccion, "imagenes/pacifista1.png");
    fondo = getImage(direccion, "imagenes/background.png");

    tiledirt = getImage(direccion, "imagenes/tiledirt.png");
    tilegrassTop = getImage(direccion, "imagenes/tilegrasstop.png");
    tilegrassBot = getImage(direccion, "imagenes/tilegrassbot.png");
    tilegrassLeft = getImage(direccion, "imagenes/tilegrassleft.png");
    tilegrassRight = getImage(direccion, "imagenes/tilegrassright.png");

    disparo = getAudioClip(getCodeBase(), "audio/miss.au");
    tema = getAudioClip(getCodeBase(), "audio/franky_theme.au");

前述のように、コードは Eclipse でエラーなしで実行されますが、Checker Framework はこれについてアドバイスしています。

4

1 に答える 1

0

数時間のデバッグの後、最終的に Java コンソールは例外に関する適切な情報を提供することにしました。どうやら Java は、ブラウザ内のコード行をあまり好まないようです。

Frame frame = (Frame) this.getParent().getParent(); 
frame.setTitle("Franky BF38, the Iron Pirate");

私はそれを削除し、すぐに修正するいくつかのバグがあるにもかかわらず、今では正常に動作します. これが将来他のユーザーに役立つことを願っています。貢献してくれてありがとう。

于 2013-05-03T15:25:26.570 に答える