• 締切済み

object 要素貼り込みのアプレットがいつからか動作しなくなった

 Windows XP(SP2)の Internet Explorer 6 で,object 要素で貼り込んでいた Java アプレットが,いつの間にか動作しなくなっていました。  サーバ上のファイルは操作しておらず,クライアント側で行った操作は Windows Update くらいです。  Internet Explorer で MSJVM を使用しています(MSJVM 上で動作させる必要があります)。Windows XP は,初期版に SP2 を適用させたもので,MSJVM は存在しています。  アプレット貼り込みに使ったコードは, <object codetype="application/java" classid="java:***.class" width="500" height="320"></object> (「***」はクラス名)です。これに,codebase 属性を加えても,classid 属性を「java:***」「***」「***.class」にしても症状は同様でした。  少なくとも半年前(2005 年 9 月ごろ)までは,この記述で動作していました。この時点では,コンソールにエラーなどは出ていません。  現在は,クラスファイルをローカルに置き,jview /a でクラスファイルを指定すれば動作することは確認しています。  applet 要素を使用すれば貼り込めますが,事情によりこれは使えません。  以上より,対策等ご存じでしたら,ご教示願えますでしょうか。  また,心当たりとして「Windows Update」があるわけですが,もし,これにより標記の現象が生じてしまうような OS・ブラウザなどの修正が起こってしまっていたのでしたら,そのときの Windows Update の内容をご教示くださればと思います。

  • Java
  • 回答数8
  • ありがとう数3

みんなの回答

  • kacchann
  • ベストアンサー率58% (347/594)
回答No.8

原因は、これ? ネットを回って調べただけなので、 真実のほどは全くわかりませんが…。 ・http://www.hotfix.jp/archives/alert/2006/ms06-004.html (「IEでモニカの使用がサポートされなくなる」) ・http://support.microsoft.com/default.aspx?scid=kb;ja;906294

elttac
質問者

お礼

 確証が得られるまでに至っていませんが,MS05-038 の修正で,object 要素を使った貼り込みができなくなったということのようです。動作しなくなった時期とも符合します。  確かな結論を得られるまで調べ尽くしてはいませんが,ひとまずここで質問を締め切らせていただきたいと思います。  ありがとうございました。

elttac
質問者

補足

 ご回答ありがとうございます。  ご紹介いただいたページがヒントになりました。「MS06-004」より,「MS05-038」が怪しいようです。  もう少し調べてみたいと思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.7

IE6でclassid を使用しての記述に <object codetype="application/java" width="500" height="320" classid="clsid:08B0E5C0-4FCB-11CF-AAA5-00401C608501" > <param name="code" value="***.class" /> </object> という記述でアプレットが記述できることが判りました。 しかし、これは、全然推奨できないです。 ネットワーク上をぶらぶらしてみると clsid:の記述がまちまちで、WEB上の情報によるclsidだと、IEが落ちてしまうものもありました。 そのなかで、スタンダード的にはSUN でのOBJECT をJAVAアプレットに割り当てる記述でしたが・うまくいきませんでした。 かなりバージョンに依存するのでよりやっかいです。 本来であれば、 <object codetype="application/java" classid="java:***.class" width="500" height="320"> でネストしてやればいいのですが、IEではネストしたOBJECTの読込が失敗しても表示するようでうまくないです。 結局の処OBJECT 要素は、IEではちゃんと規格通りに実装されていない (;;) ってわけですね。(XHTMLを使いたい場合は深刻ですねorz)

elttac
質問者

お礼

 結局本件は,マイクロソフトの,Internet Explorer のセキュリティ強化のとばっちりで,object 要素による貼り込みができなくなったということでよさそうです。  classid 属性に「clsid:...」を入れるのは,確かに可能ですが,ほめられたものではない,気持ちの悪い書き方であるとは思います。  MSJVM に頼らない,抜本的な対策を講じるしかないようです。  重ねてのご回答,ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

>「貼り込めなくなった原因」が【いつ】発生したかということです。 それが、わかったところで、以前のバージョンのIEを使うというわけにはいかないのではないでしょうか? (閉鎖的なネットワークであるなら別ですが、問題があるから更新されてるわけで、一部分だけを戻すということもできないのですから) ここまでの話で言うと、(動かなくては話にならないわけで)applet 要素を使うしかないような気がします。 他のもっと良い回答をくれる人をお待ち下さい。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

>「原因」をご教示ください。 原因は、すでに#1で参照したURLを参照してくださればわかると思いますが、IEでは、classid をJava のクラスファイル指定に使うとは思っていないと言うことだと思います。

elttac
質問者

補足

 質問文中で述べさせていただきましたが,少なくとも半年前までは,【classid 属性にクラスファイル名を指定してアプレットが貼り込めていた】のです。  これがなぜ今になって貼り込めなくなったのか,それは,おっしゃるようにマイクロソフトの思想的な問題があるとするならば,その思想の変更を実装に反映させたタイミングが存在することになり,それが「貼り込めなくなった原因」になると思います。  その「貼り込めなくなった原因」が【いつ】発生したかということです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-9893177 ↑ のHTMLObjectElement (DOMモデルでいうobject 要素)によると、(ドラフトだけど・) classid は、逆になくて、 code は、Applet class file とはっきり書いてある。 (ただ、既に#1補足で指摘されているようにHTML規格のobject 要素にはない<??) こういうことからすると、規格ありきではあっても、あまり規格にこだわってもしょうがないと思いますけど) (ブラウザの実装者からすると、どっちかを立てねばなんねえと言うことなんだと思います)

elttac
質問者

補足

 DOM に classid 属性の参照がない理由は,   http://lists.w3.org/Archives/Public/www-dom/2002AprJun/0046.html にあります。引用しますと, I suspect the removal of the classid attribute was due an editorial error since I didn't find traces of the removal in our archives. ということだそうで,それより前の WD にはあったものの,いつの間にか消えてしまったということのようです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>classid 属性の使い方も,上掲のページにあるもので,正しいものです。 一応観てきましたけど、javaのクラスファイルを指定するものとして使っても良いけど、java のクラスファイルを指定するのに使うのが必ずしも要求されているワケではなく、正しいとまでは言えないような気がします。(ブラウザの実装による余地がある)

elttac
質問者

補足

 確かに,classid 属性によるクラスファイルの指定が唯一正しいわけではありません。現に,object 要素によって Flash ファイルを貼り込むときは,【HTML の仕様の範囲で】Internet Explorer と Mozilla で指定方法が異なり,矛盾なく共存させられます。  しかし,object 要素の code 属性は,そもそも HTML の範囲の外であるので,その使用は HTML として矛盾をきたします。  だとすると,「HTML として矛盾せずに object 要素を使用してアプレットを貼り込めるか」ということになると思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>Windows XP(SP2)の Internet Explorer 6 で,…動作しなくなっていました。 ということだったのでは? >…によると object 要素に code 属性は存在しないので http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/code.asp (javaのclass ファイルを指定するとある) では、IEでは存在するので、(IEで動かないというのなら)使えばいいのでは。(applet がマシならそれを使えばいいけど、使えないから言ってるんでしょう?) >classid 属性の使い方も,上掲のページにあるもので,正しいものです。 他のブラウザでclassid が機能しIEで、(思うようには)機能しないがcode がそれに該当するというのであれば、 両方を指定するというような解決策になると思う。 または、ブラウザによって書き方を変える必要があると思う。(それが現実的だと思う、classid 使い方がたとえ正しいとしても、IEがそのようになっていないのだから正しいとか言っても仕方ない<残念だが) でなければ、何を言っているのかよくわからない。

elttac
質問者

補足

 質問で述べましたとおり,Windows XP SP2 で【今まで動作していた】アプレットが動かなくなったということで,「対策または原因」をお尋ねしています。  code 属性にこだわっていらっしゃいますが,つまり,   「存在しない code 属性を使ってしまうペナルティ」>「存在するが好ましくない applet 要素を使うペナルティ」 という意味で,「applet のほうがまし」なのです。  お尋ねしたいのは,「対策」または「原因」です。対策がないのであれば,「原因」をご教示ください。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

<object codetype="application/java" code="***.class" width="500" height="320"></object> ではどうでしょうか? object エレメントの classid 属性については、 マイクロソフトのサイトで http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/classid.asp のように説明されているので、ActiveX のclassid を指定するものです。

elttac
質問者

補足

 ご回答ありがとうございます。  確かにお書きくださった方法で動作しますが,   http://www.w3.org/TR/html4/struct/objects.html によると object 要素に code 属性は存在しないので,解決策には残念ながらなりません(applet 要素を使うほうがまだまし)。  また,classid 属性の使い方も,上掲のページにあるもので,正しいものです。

関連するQ&A

  • Javaアプレットの動作テスト(Eclipse)

    Javaアプレットの動作テストは… (1)HTMLファイルの作成 (2)java→classにコンパイル (3)作成したHTMLファイルを開く (1)~(3)のような手順で行われると思うのですが、 もっと簡単に動作テストする方法はありませんか? それと、Eclipseでアプレットの動作テストってできますか? (「メニュー」→「実行」ではできませんよね…?)

  • Javaアプレットの動作環境について

    Javaアプレットの動作環境について質問です。 まず、状況としては10台ほどのスペックの低いPC(具体的にいうと、メモリがいずれも128MB未満、CPUとHDサイズはさほど問題なし)があり、それぞれでJavaアプレットを動作するようにしたいのです。 OSはWindows2000のものと、WindowsXPのもの。 質問は以下2点です。 1.Windows2000での動作の場合、SP4は絶対必要でしょうか? 言い方を変えると、SP4が入っていないWindows2000ではJavaアプレットは動作しないでしょうか? 2.JREをインストールしましたが、Javaコントロールパネルが開ききれないPCがあるのですが、それは単にスペック不足によるものでしょうか?中には、そんなスペックでもJavaコントロールパネルが開けてJavaアプレットの動作を確認できるPCもあるため、原因が分かりません。 何かお分かりでしたら、ご回答お願いします。

  • java-prugin1.3、Netscape communicatorでアプレットが呼び出せない。

    私は現在JAVAアプレットを作成しそのクラスファイルをjarにして そのjarファイルの中からクラスファイルをロードするhtmlを書きたいので、 アプレットを貼り付ける個所に以下のようにタグを書いたのですがJAVAコンソール上でクラスが見つかりません。といわれて失敗してしまいます。 (netscapeのみ失敗します。IEは成功してアプレットを実行できます。) 何か他に必ず指定しなければいけない属性があるのでしょうか? javadocも見て確認したのですが。。。 どなたか教えていただけないでしょうか? ちなみにjarファイルもhtmlファイルも全て同階層のディレクトリにおいてあります。 ----------ソースここから-------------- <OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200" codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,1,3"> <PARAM NAME="code" VALUE="ReportSample.class"> <PARAM NAME="archive" VALUE="Sample.jar"> <PARAM NAME="codebase" VALUE="."> <PARAM NAME="type" VALUE="application/x-java-applet;version=1.3"> <PARAM NAME="mylabel" VALUE="MyLabel"> <COMMENT> <EMBED type="application/x-java-applet;version=1.3" width="200" height="200" align="baseline" java_archive="Sample.jar" java_codeBase="./" java_code="ReportSample.class"  pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> <NOEMBED> </COMMENT> Java Plug-inの実行に失敗しました </NOEMBED> </EMBED> </OBJECT> --------------------------------------

    • ベストアンサー
    • HTML
  • アプレットの動作テストができない

    Eclipseのメニュー→「実行」→「Javaアプレット」で、"HELLO"の文字を表示させるアプレットの動作テストしたんですが、エラーが出てしまいました。 エラー内容は以下の通りです。 -------------------------------------- この行に複数マーカーがあります。 - シリアライズ可能クラス Sample_01 は long 型の static final serialVersionUID フィールドを 宣言していません。 - ブレークポイント:Sample_01 ---------------------------------------- HTML上での動作テストは問題なくできるのですが、Eclipseでの動作テストは失敗します。なぜでしょうか? ソースはJava講座のHPの物なので、間違いないと思うのですが…。 //ソース import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class Sample_01 extends Applet{ //この部分に使用する変数を宣言// public void init(){ //ここで最初にやっておきたい処理を記述する// } public void paint(Graphics g){ g.drawString("HELLO!",200,200);//ここでアプレット画面に表示させる処理を記述する// } }

    • ベストアンサー
    • Java
  • IEにおけるJavaアプレットの動作問題

     最近購入のWindows XPのパソコンにインストールされているInternet Explorer6でJavaアプレットが動作しませんでした。  理由を調べると、下のサイトに示す通り今後マイクロソフト社は、著作権上IEにmicrosoft VMをインストールしないことを決定した様なのです。 http://www.watch.impress.co.jp/internet/www/article/2001/1106/javap.htm  そこで、Sun Microsystems社のホームページからJava Plug-inをインストールして、IEでJavaアプレットを動作させたのですが、処理に時間がかかってなかなか表示されないのです。スペックは問題ないと思います。 どのようにすれば、正常に表示できるのかどなたか教えていただけませんか。お願いします。

    • ベストアンサー
    • Java
  • javaアプレットで簡単なもの

    学校のレポートでjavaアプレットでボタンが複数あって、そのボタンによって動作の異なるアプレットを作ることになりました。 でも、JAVAアプレットは、 Graphicsクラスとボタン、イベント処理しか習ってません。 したがって、ホントに簡単なプログラムしか組めないと思うのですが、なにか面白いプログラムないですか?? 例では、小さな丸がボタンよって方向を変えながら動くものでした。(これぐらいのレベルです。) あと、これだけの知識で簡単な電卓って作れますか? 回答よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAアプレットの仕組みについて

    HTMLに埋め込まれたJAVAアプレットが画像を表示するように記述されている場合、JAVAアプレットは画像をサーバーからダウンロードして表示しているんですよね? JAVAアプレットがサーバーからファイルをダウンロードできるように、 JAVAアプレットがサーバー上にファイルを作り出すこともできるのですか? 今、計算プログラムをダウンロードで配布して、実行して得られた計算結果を投稿してもらう仕組みを作っているのですが、 JAVAアプレットにサーバー上のファイルを操作する能力があるのなら、JAVAアプレットを読み込み実行するだけで配布と投稿の作業が一まとめにできてしまうと思いました。 JAVAアプレットはサーバー上のファイルをどこまで操作できるのでしょうか?

    • ベストアンサー
    • Java
  • DOM操作でobjectを生成したいのですが、どうしたらよいのでしょうか?

    初めての質問なので上手く説明出来ていないかもしれませんが、 appletを非推奨タグだと知り、ブラウザによって区別して、 DOM操作によってobjectを生成したいのですが、何度やっても上手く行きません。 上手い生成方法を知っている方は教えていただけないでしょうか? 私のやってみたコードでは以下の様になり、 function addParent(_pid) { var element = document.createElement('object'); element.id = ParentID; element.classid = 'java:MasaoConstruction.class'; element.type="application/x-java-applet" element.archive='mc_c.zip,';//mc_c.zipの配置箇所 var objBody = document.getElementById(_pid); objBody.appendChild(element); //IDが_pidのものにIDが_midのObjectエレメントを追加する。 } これによって <object type="application/x-java-applet" archive='mc_c.zip,' id="*****"> </object> の様なものが出来て、classidが反映されませんでした。

  • webカメラとjavaアプレット

    webカメラの説明書きです。→→→→→→ Javaアプレットが動作可能なWebブラウザで、〇〇からの映像を表示できます。 (質問者加筆:〇〇はwebカメラの型式です。) Java用ビューワは自動にダウンロードされるため事前にインストールする必要がなく、Javaが動作する環境を持つプラットフォームに対応します。 ←←←←←← 以下質問です。(1)「Webブラウザ」とか、「Javaが動作する環境を持つプラットフォーム」とかは、例えば、windows98とかXPとかNTのinternet explorerとかが入っているPCと思っていいのでしょうか? (2)また、Javaアプレットは、〇〇の中に記憶されているんですか?(3)前の質問がyesなら〇〇にはハードディスクがあるわけではないですが、この種のJavaアプレットは、そんなに大きなサイズのソフトでは無いんですか?動画を扱うから大変だろうなんて思ってしまうのですが・・・。(4)〇〇にブラスザでアクセスした時点で、そのPCに、javaアプレットが〇〇からダウンロードされてくると思っていいですか? ちょっと自信が無くて質問です。

  • アプレット

    HelloWorldと挨拶するアプレットを作っています。Cドライブ内にjavaというフォルダを作り、その中に、ソースファイルを作り、コンパイルをしました。そしてHTMLファイルも作りました。そしてアプレットを「appletviewer」を使って見たいので、プロンプトから「C:\java>appletviewer Hello.html」というコマンドを入力しました。しかし、「内部コマンドまたは外部コマンド、操作可能なプログラムまたはパッチファイルとして認識されていません」と出てしまいます。参考書の通り行ったのですが、間違っているのでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう