java.lang.reflect.InvocationTargetException — апплет с массивами

Я рву на себе волосы, пытаясь понять, почему этот третий апплет, который я написал, отлично себя ведет в BlueJ, но выдает «java.lang.reflect.InvocationTargetException», когда я пытаюсь просмотреть его в браузере. Я все еще в значительной степени новичок и не могу понять, где искать полные журналы ошибок. Пожалуйста помоги.

Код

/**
 * Array - Dictionary (English to Korean)
 * 
 * Jodi Rehlander
 * October, 2015 for CSci1130-51
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;
import java.applet.*;

public class Dictionary extends JApplet implements ActionListener
{
JLabel mainLabel, picLabel, header;
Image headerImg;
ImageIcon headerIcon, translateIcon;

JButton[ ] words =
    {
        new JButton( "Airplane" ),
        new JButton( "Car" ),
        new JButton( "Cat" ),
        new JButton( "Chair" ),
        new JButton( "Flag" ),
        new JButton( "Newspaper" ),
        new JButton( "Spoon" ),
        new JButton( "Paintbrush" ),
        new JButton( "Horse" ),
        new JButton( "Female" )

    };

ImageIcon[ ] pics =
    {
        new ImageIcon( "airplane.png" ),
        new ImageIcon( "car.png" ),
        new ImageIcon( "cat.png" ),
        new ImageIcon( "chair.png" ),
        new ImageIcon( "flag.png" ),
        new ImageIcon( "newspaper.png" ),
        new ImageIcon( "spoon.png" ),
        new ImageIcon( "paintbrush.png" ),
        new ImageIcon( "horse.png" ),
        new ImageIcon( "female.png" ),
    };



public void init( )
{
    //set default background to white
    getContentPane( ).setBackground( Color.WHITE );

    setLayout( new BorderLayout( ) );

    headerImg = getImage( getCodeBase( ), "headerImg.png" );
    headerIcon = new ImageIcon( headerImg );
    header = new JLabel ( headerIcon );
    add( header, BorderLayout.NORTH );




    translateIcon = new ImageIcon( );
    picLabel = new JLabel( );
    picLabel.setHorizontalAlignment( JLabel.CENTER );
    add( picLabel, BorderLayout.CENTER );


    JPanel pane = new JPanel( new GridLayout( 10, 0 ) );
    pane.setOpaque( true );
    for (int x=0; x < words.length; x++ )
    {
        words[x].addActionListener( this );
        pane.add( words[x] );
    }
    add( pane, BorderLayout.WEST );
}


public void actionPerformed( ActionEvent ae)
{
    Object obj = ae.getSource( );
    for( int x=0; x < words.length; x++ )
        if( obj == words[x] )
           picLabel.setIcon( pics[x] );




    repaint( );    
}
}

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This file automatically generated by BlueJ Java Development  -->
<!-- Environment.  It is regenerated automatically each time the  -->
<!-- applet is run.  Any manual changes made to file will be lost -->
<!-- when the applet is next run inside BlueJ.  Save into a       -->
<!-- directory outside of the package directory if you want to    -->
<!-- preserve this file. -->
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Dictionary Applet</title>
    </head>
    <body>
        <h1>Dictionary Applet</h1>
        <hr>
        <applet code="Dictionary.class" 
            width=600 
            height=500
            codebase="."

            alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
         >

            Your browser is ignoring the &lt;APPLET&gt; tag!      
        </applet>
        <hr>
    </body>
</html>

Ошибка

    ui: Pushing modality for applet ID 1 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog0,-100,-100,132x38,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,126x10,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
basic: Dialog type is not candidate for embedding
ui: Pushing modality for applet ID 1 with dialog javax.swing.JDialog[dialog1,462,324,516x190,layout=java.awt.BorderLayout,TOOLKIT_MODAL,title=Application Error,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,510x162,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
ui: Pushing modality for applet ID 1 with dialog sun.plugin.util.PluginSysUtil$DummyDialog[dialog2,-100,-100,132x38,layout=java.awt.BorderLayout,APPLICATION_MODAL,title=,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,3,25,126x10,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]    

person Jodi Rehlander    schedule 08.10.2015    source источник
comment
Как выглядит HTML?   -  person MadProgrammer    schedule 08.10.2015
comment
Скопируйте также всю информацию об ошибках, пожалуйста, такие детали, как строка и трассировка стека, должны быть где-то там (прошло некоторое время с тех пор, как я сделал java)   -  person Daniel Brose    schedule 08.10.2015
comment
А какие браузеры вы используете?   -  person MadProgrammer    schedule 08.10.2015
comment
И вы можете взглянуть на это и это и это   -  person MadProgrammer    schedule 08.10.2015
comment
Отредактировано для добавления ошибок. @DanielBrose   -  person Jodi Rehlander    schedule 08.10.2015
comment
отредактировано, чтобы добавить HTML. @MadProgrammer   -  person Jodi Rehlander    schedule 08.10.2015
comment
Пожалуйста, опубликуйте полную трассировку стека, а не только имя исключения.   -  person StephaneM    schedule 08.10.2015
comment
Использование IE10 и Firefox.   -  person Jodi Rehlander    schedule 08.10.2015
comment
Кстати, из HTML видно, что код не находится в подписанной банке. Ни один современный браузер не запустит апплет, который не имеет (в банке и) цифровой подписи. В сторону: зачем кодировать апплет? Если это произошло по указанию учителя, отправьте его на Почему учителя компьютерных наук должны прекратить преподавать Java-апплеты.   -  person Andrew Thompson    schedule 08.10.2015


Ответы (1)


Чтобы закрыть цикл - мы должны были использовать в классе неподписанные .jars. Мне пришлось переместить свои массивы в метод, и тогда это сработало. Так что я не смог использовать свою причудливую реализацию, но я намного лучше понимаю доступность параметров. Спасибо всем, кто ответил.

person Jodi Rehlander    schedule 20.10.2015