我在上个月开发了一个Java Applet游戏,现在我正在尝试将其嵌入到HTML页面中。我每次都得到 NullPointerException ,尽管我已经在下一个代码之后签署了我的.jar:
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仍然没有签名/作者未知。我的游戏通过Eclipse IDE无错运行,我的嵌入代码也没有错误,因为我用一个简单的HelloWorld小程序测试它。
否则,有我的嵌入代码:
<applet code="franky_BF38/Principal.class" archive="Franky.jar" width="800" height="480"></applet>
另一方面,我的.jar看起来像这样:
audio(文件夹)
·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
我查看了所有的applet线程,没有任何响应对我有效。如果您需要任何代码或档案,请随时提出。任何帮助都会受到如此多的赞赏。
编辑:在我的页面上添加了Java控制台的线程转储(由于扩展时间较长):dump
编辑02/05/2013 :参考_constructor的警告没有初始化字段[imagen_actual,fondo,franky_salto ...] _我在类Principal下面有以下代码: / p>
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()方法中直接为这些变量分配valors,就像这样(没有初始化):
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正在为此提供建议。
答案 0 :(得分:0)
经过几个小时的调试,最后Java控制台决定提供一些关于异常的好信息。显然,Java并不喜欢浏览器中那些代码行:
Frame frame = (Frame) this.getParent().getParent();
frame.setTitle("Franky BF38, the Iron Pirate");
我删除它,现在工作正常,尽管有一些我很快就会修复的错误。希望这将有助于未来的其他用户。感谢所有人的贡献。