私は先月 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 はこれについてアドバイスしています。