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");
                 }
                 ....
             }

詳細情報

        なし