Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

HTMLのアプレットの組み込みに失敗する

去年の秋ごろから授業でjavaを習い、それとは別に同じ頃から趣味でeclipseでjavaプログラミングをしていています。
自分で作ったjavaプログラムをホームページに載せたいと思っているのですが、package付きのプログラムの組み込み方が分からずコマンドプロンプトで再コンパイルしたものを組み込んでいます。
組み込むためのコードはこんな感じです。
<applet code="Piano.class"Alt="Piano"></applet>
コード内でサイズ指定をしていてもうまくいきませんでした。
先ほどHTMLを開いてみたところ、アプレットクリック時のエラーメッセージとして
java.lang.reflect.InvocationTargetExpection
が出ました。
このことについて調べてみるも、なぜこれが出ているのかが理解できず。
ちなみに、コンソールでは
Detected from bootclasspath: C:\\PROGRA~1\\Java\\jre7\\lib\\deploy.jar
Java Plug-in 10.1.0.8
使用中のJREのバージョン 1.7.0_01-b08 Java HotSpot(TM) Client VM
ユーザーのホーム・ディレクトリ = C:\Users\username
(以下ヘルプ・メッセージのため省略)
と表示されていました。
javaのソースコードは2つのクラス・ファイルに分かれていて、1つめのクラスではFrameをextendsしていてsetSizeやsetLoactionを使ってウィンドウのサイズと位置を決めていたりします。
また、WindowAdptも使用していて、ウィンドウの×印を押すとウィンドウが閉じる仕組みにしています。
コンパイルエラーなどは出ておらず、コマンドプロンプト上で実行を試してみると、何も問題なく実行ができました。

別のプログラムは何も問題なく組み込み・実行できていました。
そのプログラムではAppletをextendsしていました。
また、ウィンドウのsetSizeもsetLocationもしていませんでした。
組み込みに失敗した理由はそこの違いかとも思っていますが、どのようにすればうまくいくでしょうか?

6

回答

5770

閲覧

6件の回答

評価

0

>組み込みに失敗した理由はそこの違いかとも思
っていますが、
質問する前にやることやっておこう。
行を一つずつコメントして実行してみれば、本当
にそれが原因か分かる。

次にそれをキーワードに、同じような事例がない
か検索する。

評価

0

ちょっときになった。

> コマンドプロンプト上で実行を試してみると、何も問題なく実行ができました。

と確認した手法を記載してください。
※コマンドプロンプトに書いたコマンドね


(たぶんあのプログラム以外で起動しているとアプレット以外のファイルの可能性が)

評価

0

> $

たぶんjavax.swing.JFrame or java.awt.Frame を extends したクラスを アプレットに使用としていると踏んでいる。

評価

0

$さん・あさん回答ありがとうございました。

もう一度いろいろと調べてみるました。
うまくいかない方はmainメソッドを使っていて、コマンドプロンプロで
D:\Programing_Box\Etc_Box\program>javac Piano.java Play.java

D:\Programing_Box\Etc_Box\program>java Piano
としてみるとeclipseで実行させたときのように動いてくれます。

うまくいく方はmainメソッドは使用しておらず、
D:\Programing_Box\Etc_Box\program>java Painter
としてみると
エラー: メイン・メソッドがクラスPainterで見つかりません。次のようにメイン・メソ
ッドを定義してください。
   public static void main(String[] args)
というエラーが帰ってきました。
mainの代わり(?)に、initメソッドを使っていました。

mainメソッドを使っていて、コマンドプロンプトから実行できたと言うことは、あさんの言う通りうまくいかない方はアプレットの形になっていないと言うことですね?
そういえばeclipseで実行するときも、実行のところにうまくいく方はアプレットって書いてあって、うまくいかない方はアプリケーションって書いてありました。

そこで、試しにmainメソッドをinitに変えてみたところ、コマンドプロンプトで実行できなくなり、ブラウザ上でもうまくいかないままでした。
ちょっとメソッド名とかを変えたくらいじゃだめだろうと中身をうまくいっている方を参考にいじってみるも、今度はブラウザ上で一瞬プログラムが実行されたかと思うとすぐ消えてしまい、アプレットクリックで実行に失敗しましたとでるようになりました。

ソースコードを以下にアップしてみました。
正しく動くアプレット
http://space.geocities.jp/programing_box/sorce/Painter.java
正しく動くアプリケーション
http://space.geocities.jp/programing_box/sorce/Piano.java
http://space.geocities.jp/programing_box/sorce/Play.java
アプリケーションからアプレット形式を目指して書き換えたソース(Play.javaのほうは書き換えせず)
http://space.geocities.jp/programing_box/sorce/Piano.java

これを機にアプレットの書き方とアプリケーションの書き方との違いとかも勉強しようと思います。

評価

0

あ・・・
URL間違えました;
正しく動くアプリケーションのPiano.javaのファイル名は、Piano0.javaです。

正しく動くアプリケーション
http://space.geocities.jp/programing_box/sorce/Piano0.java
http://space.geocities.jp/programing_box/sorce/Play.java

評価

0

通常 アプレットをコマンドから起動する場合は

http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs/win32/appletviewer.html

のプログラムを使います。

スレ主の作成しているのはスタンドアロンのGUIプログラムだからアプレットでは動かない。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。