java.lang.InstantiationException:"code" と "object" の両方ではなく、どちらか片方だけを指定する


症状

アプレットを Sun JRE を使用したブラウザで実行している場合、InstantiationException がスローされます。同じアプレットが Microsoft VM では実行できます。

原因

以下の 2 つの原因があります。

  1. codeobject 属性の両方を <APPLET> タグで指定している

    <APPLET code=MyApplet object=MyApplet.ser width=100 height=100>
    </APPLET>

    Sun JRE は code または object どちらか片方の属性にアクセスできますが、両方にはアクセスできない
     
  2. code 属性を <APPLET> タグで指定し、object 属性を <PARAM> タグで指定している

    <APPLET code=MyApplet width=100 height=100>
    <PARAM name="object" value="someValue">
    </APPLET>

    public class MyApplet extends java.applet.Applet
    {
            public void init()
            {
                   String value = getParameter("object");
            }
            ....
    }

    Sun JRE ではパラメータ名としては object をサポートしていません。

解決方法

        最初の例の場合は、code 属性を <APPLET> タグから削除します。

             <APPLET object=MyApplet.ser width=100 height=100>
             </APPLET>

       2 番目の例の場合は、パラメータ名を別の名前に変更します。

             <APPLET code=MyApplet width=100 height=100>
             <PARAM name="property1" value="someValue">
             </APPLET>

             public class MyApplet extends java.applet.Applet
             {
                 public void init()
                 {
                         String value = getParameter("property1");
                 }
                 ....
             }

詳細情報

        なし