使用多个类applet获取NullPointerException

时间:2013-04-30 14:58:24

标签: java html applet nullpointerexception

我在上个月开发了一个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正在为此提供建议。

1 个答案:

答案 0 :(得分:0)

经过几个小时的调试,最后Java控制台决定提供一些关于异常的好信息。显然,Java并不喜欢浏览器中那些代码行:

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

我删除它,现在工作正常,尽管有一些我很快就会修复的错误。希望这将有助于未来的其他用户。感谢所有人的贡献。