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

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

0

ClassNotFoundException

import java.applet.Applet;
import java.awt.*;

/*<applet code="App14.class" width="400" height="200"></applet>*/

public class App14 extends Applet implements Runnable {
    static int Ovalx = 100;
    boolean x = true;

    public void init() {
        setBackground(Color.white);
        setForeground(Color.red);

        Thread th = new Thread(this);
        th.start();
    }

    public void run() {
        try {
            while (true) {
                repaint();
                Thread.sleep(10);

                if (x) Ovalx++;
                else Ovalx--;
                if (Ovalx >= 350) x = false;
                if (Ovalx <= 0) x = true;
            }
        }
        catch (Exception err) {
        }
    }

    public void paint(Graphics g) {
        g.fillOval(Ovalx , 75 , 50 , 50);
    }
}

これをApp14.htmlで保存。次にコマンドプロンプトでappletviewer App14.html を入力したら例外が発生しました。

load : クラス App14.class が見つかりません。
java.lang.ClassNotFoundException: App14.class
       at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java;211)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
       at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java;144)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
       at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java;662)
       at sun.applet.AppletPanel.createApplet(AppletPanel.java:785)
       at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
       at sun.applet.AppletPanel.run(AppletPanel.java:368)
       at java.lang.Thread.run(Thread.java:662)
原因と解決方法を教えて下さい。お願いします。

20

回答

8954

閲覧

20件の回答

評価

0

とりあえずぐぐる。

評価

0

ぐぐっていろいろ試したけど効果が無い。
ヒントなどがあれば教えてほしいです。

評価

0

いろいろと思考錯誤してアップレットビューア—で表示させることに成功しました。クラスファイルが作成されない?ことが問題だったと思います
ファイル名をApp14.javaに変えて。javac App14.javaでコンパイルするとApp14.classが作成されました。次にappletviewer App14.javaと入力(なぜかApp14.htmlで無くともビューアで表示できた)。この方法で表示に成功しました。
しかし依然としてappletviewer App14.thmlと入力するだけだと例外が発生します。ぐぐってもよく分りませんでした。
教えて下さいお願いします。 
 

評価

0

今回ClassNotFoundExceptionが出る理由を探すのではなく、
ClassNotFoundExceptionが何を表し、どういうときに
出るかをしっかり理解する。
そうすれば、今回なにが悪いのか類推することができ、
次回同じエラーになったときにまた調べないで済む。

評価

0

>しかし依然としてappletviewer App14.thmlと入力するだけだと例外が発生します。

thml->htmlだよな。
それはともかく。

だって、名前だけApp.14.htmlだって、
中身がHTMLじゃないもの。

評価

0

> だって、名前だけApp.14.htmlだって、
> 中身がHTMLじゃないもの。

HTMLである必要はないですよ。

appletviewer はHTMLを読むんじゃなくて指定されたファイルを読んで、とにかく<applet>タグを探すという便利機能があるみたいですよ。

なので、質問者が書いているソースコード(App14.java)を、appletviewerに渡せば良い、というのが正解かな。App14.java の中にコメントとして書かれている <applet> タグを、appletviewerはちゃんと認識してくれる。そして、指定されたファイルが java なら classファイルへのコンパイルもしてくれる。

逆に、ファイルの拡張子を html にしてしまうと、<applet>タグは認識してくれるけど、Javaソースコードとは見なされないので、classファイルへのコンパイルがおこなわれない、ということですね。

評価

0

おっと、参考URL張り忘れました。

http://www.javadrive.jp/applet/basic/index3.html

評価

0

>HTMLである必要はないですよ。

問題はそこじゃないだろ。
HTMLじゃないものに、拡張子にhtmlなんてつけていいのかよ。

レスは期待していない。

評価

0

> HTMLじゃないものに、拡張子にhtmlなんてつけていいのかよ。

それを言ったら Javaソースコード(*.java)に <applet> タグを書いて意味があるのかという話にもなる。classファイルではなくJavaソースコードが渡せるという時点で、appletviewerは特殊でしょ。そういう特殊解釈を想定すると、もしかしてJavaソースコードにhtmlという拡張子を付けると特別なことが起こるのか?と考えても不思議はない。

実際、解説ページなんかみると、appletviewer に Javaソースコードを指定すると書いてあったり、HTMLファイルを指定すると書いてあったり様々(どちらも正解)なので、混乱する気持ちは良く分かる。

評価

0

>もしかしてJavaソースコードにhtmlという拡張子を付けると特別なことが起こるのか?と考えても不思議はない。

ここは笑うところでしょ。
昔から、拡張子を書き換えただけでデータの形式を
変換できたと思い込んでる初心者が、よくネタになってる。

最近のWindowsは、デフォルトで拡張子を隠してるから、こういう事はないのかね。

>Javaソースコードを指定すると書いてあったり、HTMLファイルを指定すると書いてあったり様々(どちらも正解)なので、混乱する気持ちは良く分かる。

「拡張子がjavaのJavaソースコード」または
「拡張子がhtmlまたはhtmのHTMLファイル」だよな。
中身がJavaソースコードで拡張子がhtmlのファイルを、
Javaソースコードと呼ぶの?
俺なら呼ばない。

評価

0

しばらく前からWindowsでも、拡張子ではなく
バイナリで判断してるものも多いね。
例えば画像ファイルの拡張子を変えても、
Paintは開いてくれたと思う。

javacも拡張子を見てなかったかな。
javaはパッケージとの絡みもあって固定だけど。
それはともかく。


>中身がJavaソースコードで拡張子がhtmlのファイルを、
>Javaソースコードと呼ぶの?
そもそも.javaでも、厳密にはファイルを指して
「コード」とは言わないと思う。
ソース「ファイル」ならともかく。

中身については拡張子がなんでも、Javaの
コードであればソースコード。
Webページ中に書かれたものだってソース
コードだし。

で、実際にはその場その時その人により、
曖昧に使われていると思う。

評価

0

Wikipediaではファイルが前提という記述だな…。
サンプルと自己矛盾を起こしてる。
まあそれを言ったら、ファイルの定義からか。

評価

0

コマンドプロンプトで
C:\java>javac App14.java
C:\java>java App14  (クラスファイルが作られる)
C:\java>appletviewer App14.java (拡張子はjavaとhtmlのどちらでもアップレットビューアで表示できた。変えるのが面倒だからApp14.javaにした)

appletviewer App14.java もしくは App14.htmlのどちらでもアップレットビューアで表示させる事ができました。
しかし、まずjavac App14.javaと入力してクラスファイルを作らないと例外が発生します。

評価

0

>なので、質問者が書いているソースコード(App14.java)
>を、appletviewerに渡せば良い、というのが正解かな。>App14.java の中にコメントとして書かれている ><applet> タグを、appletviewerはちゃんと認識してくれ
>る。そして、指定されたファイルが java なら classフ
>ァイルへのコンパイルもしてくれる。

appletviewer自体にコンパイルは出来ないでしょ?
単にhtmlファイルを作成する手間が省けるだけだと思いますが…
どちらにしてもjavacでコンパイルは必須。
javaファイルとhtmlファイルに分離するか1ファイルで統一するかだけの違い。

評価

0

App14.htmlの名称で飲ませたときは、
Javaコードのコメント1行だけ解釈されて、
ほかの行は、無視かあるいは捨てられてんだよ。

評価

0

動作するってことは、コンパイルするのでは。
ただ、appletviewerが終了した後、
クラス・ファイルが残っているかどうかは知らない。

まあ、元々テスト用の仕様だろうし、
(ローカルでないと使えないよね。Webにあげられない)
紛らわしいから、この場合のクラスファイルなんか、
残ってない方がいいと思うけどね。

評価

0

動作するってのが不思議でしょうがない…

少なくともそんな話は聞いたことが無い。
appletviewerって単にアプレットタグ読むだけでしょ?
コンパイルまでするなんて自体がおかしい。

それともJREのバージョンによって違うのか?
⇒Sunの仕様変更??

自分の認識違いかと思いローカルで試してみたが…
結果はコンパイルはされませんでした。
※1.5ではね。

評価

0

ごめん。ラッパースクリプト使ってるからでした。
appletviewer だけでは javac 呼んでくれません。

評価

0

自分の誤記を修正…

>それともJREのバージョンによって違うのか?

JDKですね…失敬。
viewerだからJREの方かと思ってしまった。

>ごめん。ラッパースクリプト使ってるからでした。

ですよね。了解です。

評価

0

んじゃ、俺も下手な踊りを踊ったって事になるのか。
いや、一応自分で閉めとかないと。(・ω・)

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