# Applet java.lang.reflect.InvocationTargetException



## Hakkemaster (25. Apr 2010)

Hi ich habe leider ein problem mit meinem applet... immer wenn ich das applet starten will kommt folgende fehler meldung:


```
java.lang.reflect.InvocationTargetException
	at java.awt.EventQueue.invokeAndWait(Unknown Source)
	at client.Applet.init(Applet.java:27)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.awt.AWTPermission setAppletStub)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.applet.Applet.setStub(Unknown Source)
	at client.Applet.initComponents(Applet.java:92)
	at client.Applet.access$000(Applet.java:21)
	at client.Applet$1.run(Applet.java:29)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```

und hier der applet code:


```
package client;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author Mericon
 */
public class Applet extends javax.swing.JApplet {

    /** Initializes the applet Applet */
    @Override
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
             }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
           }
    
 private String makeMD5(String text) {
        MessageDigest md = null;
        byte[] encryptMsg = null;
        try {
            md = MessageDigest.getInstance("MD5");

            encryptMsg = md.digest(text.getBytes());

        } catch (NoSuchAlgorithmException e) {
            System.out.println("No Such Algorithm Exception!");
        }
        String swap = "";

        String byteStr = "";

        StringBuffer strBuf = new StringBuffer();
        for (int i = 0; i <= encryptMsg.length - 1; i++) {
            byteStr = Integer.toHexString(encryptMsg[i]);

            switch (byteStr.length()) {
                case 1:

                    swap = "0" + Integer.toHexString(encryptMsg[i]);
                    break;
                case 2:

                    swap = Integer.toHexString(encryptMsg[i]);
                    break;
                case 8:

                    swap = (Integer.toHexString(encryptMsg[i])).substring(6, 8);
                    break;
            }
            strBuf.append(swap);

        }
        String hash = strBuf.toString();
        return hash;
    }
    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jPasswordField1 = new javax.swing.JPasswordField();

        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setStub(null);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel1.setText("Nickname:");

        jLabel2.setText("Passwort:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1))
                .addGap(43, 43, 43)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPasswordField1, 0, 0, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

  
            // Neue GUI starten und login daten übergeben
            new GUI(this.jTextField1.getText(), makeMD5(new String(jPasswordField1.getPassword())));
       
        // TODO add your handling code here:
    }                                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   

}
```

ich weis leider nicht woran es liegt bitte helft mir ein wenig auf die sprünge.

gruß hakkemaster


----------



## L-ectron-X (25. Apr 2010)

Der Name deiner Java-KLasse ist etwas unglücklich gewählt.
Auch wenn du deine Klasse Applet nicht von java.applet.Applet ableitest erbst du quasi auch von Applet.

JApplet erbt in der Java-API von Applet.
Und nun lässt du Applet wieder von JApplet erben.

Ändere den Namen deiner Java-Klasse und dann sehen wir weiter.


----------



## Hakkemaster (25. Apr 2010)

leider birngt mich das auch nicht weiter  hab die klasse dennoch mal in chatApplet umbenannt.

im ersten post habe ich allerdings auch einen fehler entdeckt denn es wurde nicht die komplette meldung gepostet wie ich eigendlich wollte 

so hier jetzt nochmal die vollständige meldung:


```
java.lang.reflect.InvocationTargetException
	at java.awt.EventQueue.invokeAndWait(Unknown Source)
	at client.chatApplet.init(chatApplet.java:27)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied ("java.awt.AWTPermission" "setAppletStub")
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.applet.Applet.setStub(Unknown Source)
	at client.chatApplet.initComponents(chatApplet.java:92)
	at client.chatApplet.access$000(chatApplet.java:21)
	at client.chatApplet$1.run(chatApplet.java:29)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```

ich hoffe weiter auf hilfe


----------



## L-ectron-X (25. Apr 2010)

Zeig mal, wie du das Applet einbindest.
Dann muss das Applet wohl auch noch signiert werden. -> FAQ
Und da du GroupLayout verwendet hast, musst du wahrscheinlich auch noch die Bibliothek dazu mit dem Applet ausliefern.


----------



## Hakkemaster (25. Apr 2010)

Einbinden tu ich das applet wie folgt:


```
<applet archive="http://localhost/xsocketclient.jar" codebase="xsocketclient" code="client.chatApplet"></applet>
```

da ich es mit netbeans erstellt habe sollte es signiert sein oder irre ich mich?

und welche lib meinst du?


----------



## L-ectron-X (25. Apr 2010)

Hakkemaster hat gesagt.:


> ```
> <applet archive="http://localhost/xsocketclient.jar" codebase="xsocketclient" code="client.chatApplet"></applet>
> ```


Dein Tag sollte so aussehen:

```
<applet archive="xsocketclient.jar" code="client.chatApplet" width="600" height="400"></applet>
```
Das codebase-Attribut ist nur nötig, wenn die Jar-Datei auf einem anderen Rechner und/oder in einem anderen Verzeichnis als die HTML-Datei liegt. Das müsstest du noch mal prüfen. Siehe auch FAQ.




Hakkemaster hat gesagt.:


> da ich es mit netbeans erstellt habe sollte es signiert sein oder irre ich mich?


Das hat mit Netbeans nichts zu tun. Dein Applet wird sich mit einem anderen Server verbinden, also muss es signiert sein. -> FAQ



Hakkemaster hat gesagt.:


> und welche lib meinst du?


Die vom GroupLayout. Die wird von NetBeans mitgeliefert und muss demzufolge mit ausgeliefert werden. Die Jar-Datei gehört dann auch ins archive-Atrribut. -> FAQ


----------



## eRaaaa (25. Apr 2010)

L-ectron-X hat gesagt.:


> Die vom GroupLayout. Die wird von NetBeans mitgeliefert und muss demzufolge mit ausgeliefert werden. Die Jar-Datei gehört dann auch ins archive-Atrribut. -> FAQ



GroupLayout wurde doch in 1.6 integriert?(GroupLayout (Java Platform SE 6))



> NetBeans 5.0 supports GroupLayout by way of the swing-layout project. Because of the success of this work, all three portions have been rolled into GroupLayout in Java Standard Edition version 6. The main difference between the GroupLayout in Java SE 6 and swing-layout is in the package name and method names. NetBeans 5.5 provides the ability to target either the GroupLayout in Java SE 6, or the GroupLayout in swing-layout. Which version NetBeans targets is determined by the version of the Java platform your project targets. A project targeting Java SE 6 uses the GroupLayout in Java SE, otherwise GroupLayout in swing-layout is used.


How to Use GroupLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

Hier wurde das aus 
	
	
	
	





```
javax.swing
```
 verwendet, daher sollte das i.O. sein oder ?(es sei denn es soll auch unter < 1.6 laufen  )


----------



## L-ectron-X (25. Apr 2010)

Stimmt, habe ich übersehen.


----------



## Marco13 (25. Apr 2010)

Kommt die Meldung nicht einfach weil man [c]setStub(null);[/c] nicht aufrufen darf? (Ich weiß nicht wozu das gut ist - vielleicht kann man's einfach weglassen.... mal in die API doku schauen...)


----------



## Hakkemaster (27. Apr 2010)

okay es lag am signieren xD danke euch


----------

