1

私はJavaを初めて使用します。HTMLページにアプレットをデプロイできず、常にInvocationTargetExceptionが発生します。これを説明するために、次に例を示します。

私のアプレットには、メインを持つクラスが1つだけあります。すべてのコードはNetBeansによって生成され、GUIには次のボタンが1つだけ含まれています。

package javaapplication;

public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
    }

    @SuppressWarnings("unchecked")


   // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");

        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()
                .addComponent(jButton1)
                .addContainerGap(317, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jButton1)
                .addContainerGap(266, Short.MAX_VALUE))
        );

        pack();
    }
    public static void main(String args[]) {
    /* Set the Nimbus look and feel */
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //</editor-fold>

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new NewJFrame().setVisible(true);
        }
    });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    // End of variables declaration      
}

NetBeans内で、スムーズにコンパイルおよび実行されます。次に、.jarファイルをクリーンアップしてビルドします。これがMANIFEST.MFで、私には問題ないように見えます。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_10-b18 (Oracle Corporation)
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build
Main-Class: javaapplication.NewJFrame

これが私のindex.htmlです:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <applet archive="JavaApplication.jar" width="300" height="300" code="javaapplication.NewJFrame"/>

    </body>

</html>

それらを同じディレクトリに配置し、権限も適切に設定しました。サーバーに配置されているindex.htmlを開こうとすると、FirefoxとChromeの最新バージョンの両方でInvocationTargetExceptionが発生します。

メインを持つ別のクラスを作成したり、Jnlpを使用したが役に立たなかったりするなど、さまざまなことを試しました。どんな助けでも大歓迎です。

4

1 に答える 1

2

コードにアプレットが表示されません。

package javaapplication;

public class NewJFrame extends javax.swing.JFrame {
    public NewJFrame() {
        initComponents();
    }
[...]

Javaプロジェクトを最初から作成します。(Netbeans)

  • [ファイル]>[新しいプロジェクト](Ctrl-Shift-N)(MyTestApplet)を選択します。
  • 「カテゴリー」で、「Java」を選択します。
  • 「プロジェクト」の下の「Javaクラス・ライブラリー」を選択します。
  • [完了]をクリックします。

  • アプレットのソースファイルを作成します

  • [プロジェクト]ウィンドウでMyTestAppletプロジェクトノードを右クリックし、[新規]> [その他](Ctrl-N)を選択します。
  • 「カテゴリー」で、「Java」を選択します。
  • SwingGUIフォーム>JAppletフォームを選択します。
  • [次へ]をクリックします。
  • [クラス名]に「。」と入力しNewJAppletます。
  • [パッケージ]に「。」と入力しjavaapplicationます。
  • [完了]をクリックします。

IDEは、指定されたパッケージにアプレットのソースファイルを作成します。アプレットのソースファイルが開き、GUIエディタが開きます。

  • ボタンをGuiにドラッグします。

ソースNewJapplet.javaは次のようになります。

package javaapplication;

public class NewJApplet extends javax.swing.JApplet {


    @Override
    public void init() {

        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    @SuppressWarnings("unchecked")

    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        jButton1.setText("jButton1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(182, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(139, 139, 139))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(43, 43, 43)
                .addComponent(jButton1)
                .addContainerGap(232, Short.MAX_VALUE))
        );
    }
    private javax.swing.JButton jButton1;

}
  • 走るBuild

distフォルダにあるのはMyTestApplet.jar

  • .jarをフォルダ内のサーバーにコピーしますMyTestApplet
  • 次の.htmlをサーバーの同じフォルダーにコピーしますMyTestApplet

このhtmlファイルを使用してください。

  • Javaバージョンを指すclassid="clsid:CAFEEFAC- 0016 -0000-0000-ABCDEFFEDCBA" width = "300" height="300">を変更します
  • 0017

AppletPage.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-US">
  <head>
    <title>Applet Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  </head>
  <body>
    <h1>Applet Demo</h1>
    <h2>This applet has been deployed with the object tag</h2>
    <object 
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" width="300" height="300">
    <PARAM name="code" value="javaapplication.NewJApplet">
    <PARAM name="archive"  value="MyTestApplet.jar">
    <comment>
      <embed code="javaapplication.NewJApplet.class"
             width="300"
             height="300"
             archive="MyTestApplet.jar"
             type="application/x-java-applet">
        <noembed>
          No Java Support.
        </noembed>
      </embed>
    </comment>
  </object>

  </body>
</html>
  • ブラウザに次のURLを入力します。http://localhost/MyTestApplet/AppletPage.html

と出来上がり:

ここに画像の説明を入力してください

お役に立てれば。

于 2013-03-24T06:27:12.573 に答える