質問投稿でgooポイントが当たるキャンペーン実施中!!>>

お世話になります。

只今、Appletの操作を勉強しています。

先日まで動いていた、Appletが急に表示されなくなってしまいました。

「appletviewer」で実行すると表示されるのですが、HTMLを叩くと表示されません。

JAVAコンソールには・・・

java.lang.ClassNotFoundException: javax.swing.JComboBox
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at java/lang/ClassLoader.loadClassInternal (ClassLoader.java)
at DemoApplet.init (DemoApplet.java)
at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java)
at com/ms/applet/AppletPanel.securedCall (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)

・・・と、表示されています。

クラスパスの問題であれば、「appletviewer」でも動かないだろうし・・・何が問題なのでしょうか??

・・・行き詰まってます。

このQ&Aに関連する最新のQ&A

A 回答 (8件)

>AppletTest.java:1: パッケージ com.sun.java.swing は存在しません。


import com.sun.java.swing.*;

パッケージ com.sun.java.swingは、swingall.jarにあります。
>javac -target 1.1 -classpath swingall.jar AppletTest.java
のように指定しているようですが、

C:\java\appletに、swingall.jarはありますか?

私が示している例を、分からないまま、そのまま実行するのではなく、
自分の環境に合わせて実行してくださいね。

この回答への補足

お世話になります。

swingall.jarはあります。

再度、コンパイルしましたが・・・無理でした。

補足日時:2002/08/09 18:07
    • good
    • 0

複数の問題が山積みで原因が特定できないのですが、


ひとつずつ解決していきませんか?
まずは単純なサンプルを動作させてください。そのサンプルに処理を徐々に加えて、
現在のプログラムに近づけていくと、どこかで問題が発生するでしょう。
発生したときに加えてた処理=問題の原因です。

私は以下のようなプログラムで、JDK1.1ベースのswingが動作します。
tnishiokaはこのサンプルが動作しますか?
また、このサンプルにどんな処理を加えると、問題が発生しますか?
--------------------
■TestApplet.java
import com.sun.java.swing.*;
public class AppletTest extends JApplet{
public AppletTest(){
JRootPane rp = this.getRootPane();
rp.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
this.getContentPane().add(new JButton("JButton"));
}
}
--------------------
■Test.html
<HTML>
<applet
codebase="."
code="AppletTest"
archive="swingall.jar"
width=100
height=100
>
</applet>
</HTML>
--------------------
■ファイル構成(以下の3つのファイルが同一ディレクトリ)
 Test.html
 AppletTest.class
 swingall.jar
--------------------
■コンパイル(JDK1.1ではないので、targetオプション付加)
javac -target 1.1 -classpath swingall.jar AppletTest.java
--------------------
archiveを追加せずに動作するのはおかしいと思います。
plug-inを使っているのではないですよね?
 →Appletが動作するときにタスクトレイにPlug-inのアイコンが表示されますか?
swingall.jarのアーカイブを"展開して"codebaseと同じディレクトリに置いていたりしますか?
 →それならば動作すると思います。

この回答への補足

本当にお世話になります。

・・・コンパイルが通りませんでした。

C:\java\applet>javac -target 1.1 -classpath swingall.jar AppletTest.java
AppletTest.java:1: パッケージ com.sun.java.swing は存在しません。
import com.sun.java.swing.*;
^
AppletTest.java:3: シンボルを解釈処理できません。
シンボル: クラス JApplet
位置 : AppletTest の クラス
public class AppletTest extends JApplet{
^
AppletTest.java:5: シンボルを解釈処理できません。
シンボル: クラス JRootPane
位置 : AppletTest の クラス
JRootPane rp = this.getRootPane();
^
AppletTest.java:5: シンボルを解釈処理できません。
シンボル: メソッド getRootPane ()
位置 : AppletTest の クラス
JRootPane rp = this.getRootPane();
^
AppletTest.java:7: シンボルを解釈処理できません。
シンボル: クラス JButton
位置 : AppletTest の クラス
this.getContentPane().add(new JButton("JButton"));
^
AppletTest.java:7: シンボルを解釈処理できません。
シンボル: メソッド getContentPane ()
位置 : AppletTest の クラス
this.getContentPane().add(new JButton("JButton"));
^
エラー 6 個

補足日時:2002/08/09 14:42
    • good
    • 0

あと、書き忘れたのですが…。


ブラウザのVM、つまりJDK1.1ベースで動作させるつもりなら、
コンパイルもJDK1.1でしたほうがいいですよ。
JDK1.3で新たに追加された機能を知らずに使っても、
コンパイルエラーにならずに、実行時にエラーになりますから。
    • good
    • 0

swingのライブラリが、ARCHIVE属性にないのですが、書き忘れでしょうか?


それがないと、最初の質問である。
java.lang.ClassNotFoundException: javax.swing.JComboBox
になると思うのですが…。

あとコンストラクタに、
以下の2行を追加してみてください。

JRootPane rp = myJApplet.getRootPane();
rp.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);

この情報は、swing1.1のドキュメントにありました。
http://java.sun.com/products/jfc/swingdoc-api-1. …

アプレットを動かすときはどうやって起動していますか?
・HTMLファイルをダブルクリック
 これはやめたほうがいいです。正常に動くかもしれませんが、ローカルファイルのアクセスと同じ結果になるかもしれません。

・ブラウザからtomcat経由で起動
 ブラウザのURLにhttp://tomcatのURL/xxxx/xxx.html

というような形で、httpで指定して動かしたほうがいいと思います。

これでスタックトレースはちょっと減るかと思います。

この回答への補足

お世話になります。
何故かARCHIVE属性が無い状態で動作しました。
CODEBASEのみ追加でOKだったみたいです。

JRootPane rp = myJApplet.getRootPane();
rp.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);

は、このDemoAppletはAppletを直に継承しているのでコンパイルエラーになってしまいました。

JAppletを継承しなおしたところ、コンパイルは通りましたが実行で以下のエラーが表示されました。

com.ms.security.SecurityExceptionEx[DemoApplet.<init>]: cannot access file C:\WINDOWS\Java\lib\swing.properties
at com/ms/security/permissions/FileIOPermission.check (FileIOPermission.java)
at com/ms/security/PolicyEngine.deepCheck (PolicyEngine.java)
at com/ms/security/PolicyEngine.checkPermission (PolicyEngine.java)
at com/ms/security/StandardSecurityManager.chk (StandardSecurityManager.java)
at com/ms/security/StandardSecurityManager.checkRead (StandardSecurityManager.java)
at java/io/FileInputStream.<init> (FileInputStream.java)
at java/io/FileInputStream.<init> (FileInputStream.java)
at javax/swing/UIManager$3.run (UIManager.java:754)
at javax/swing/SwingUtilities.doPrivileged (SwingUtilities.java:1611)
at javax/swing/UIManager.loadSwingProperties (UIManager.java:770)
at javax/swing/UIManager.initialize (UIManager.java:919)
at javax/swing/UIManager.maybeInitialize (UIManager.java:945)
at javax/swing/UIManager.getUI (UIManager.java:560)
at javax/swing/JPanel.updateUI (JPanel.java:110)
at javax/swing/JPanel.<init> (JPanel.java:66)
at javax/swing/JPanel.<init> (JPanel.java:99)
at javax/swing/JRootPane.createGlassPane (JRootPane.java:224)
at javax/swing/JRootPane.<init> (JRootPane.java:181)
at javax/swing/JApplet.createRootPane (JApplet.java:132)
at javax/swing/JApplet.<init> (JApplet.java:125)
at DemoApplet.<init> (DemoApplet.java:24)
at com/ms/applet/BrowserAppletFrame.newInstance (BrowserAppletFrame.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)
java.lang.Error: Do not use DemoApplet.add() use DemoApplet.getContentPane().add() instead
at javax/swing/JApplet.createRootPaneException (JApplet.java:208)
at javax/swing/JApplet.addImpl (JApplet.java:230)
at java/awt/Container.add (Container.java)
at DemoApplet.init (DemoApplet.java:71)
at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java)
at com/ms/applet/AppletPanel.securedCall (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)

補足日時:2002/08/06 16:02
    • good
    • 0

なにをするアプレットなのか教えてくれませんか?



エラーがでたら、そのスタックトレースから原因を判明させませしょう。
at DemoApplet.init (DemoApplet.java:28)
とあるので、DemoApplet.javaの28行目でなにをしていますか?

ここで行やっていることに対して、
「cannot access file」とエラーが発生しているのです。

アプレットでは通常セキュリティ上、ローカルファイルのアクセスはできません。
このアプレットでローカルファイルのアクセスをしているのではないですか?
アプレットビューワでは、たぶんこのセキュリティの制限がないです。

>ただ、デスクトップの「HelloWorld」は相変わらずです。
デスクトップというのはどういうことでしょう?
デスクトップにファイルを置いているということでしょうか?

どういったファイル構成で、なにを動かしているのか分からないので、
もうすこし情報をください。

・HTML中のアプレットタグの内容
・HTML,classファイルの配置構成
・起動方法
など

この回答への補足

お世話かけます・・・

これは基本画面はボタン、コンボボックスで、ボタンをクリックでサーブレットを実行させるアプレットです。

DemoApplet.javaの28行目は・・・
panel = new JPanel();
・・・でした。

一応、前後の行は・・・
public void init(){
panel = new JPanel();
panel.setLayout(new GridLayout(7,1));
・・・こんな感じです。

ローカルファイルにアクセスしてる所は無いと思います。

・HTML中のアプレットタグの内容
<applet code="DemoApplet.class" width = 300 height = 300 codebase="."> </applet>
・HTML,classファイルの配置構成
同じディレクトリです。
・起動方法
Webサーバ(Tomcat3.2.3)を起動してます。
・環境
Tomcat3.2.3
JDK1.3
Windows2000

>デスクトップというのはどういうことでしょう?
>デスクトップにファイルを置いているということでしょうか?
はい。「HelloWorld」はデスクトップに置いてありましたが、今はC:\Javaに置いてあります・・・結果は同じです。

以上です。
・・・本当にお世話様です。

補足日時:2002/08/06 14:03
    • good
    • 0

ただサーバにおくだけではダメですよ。


Appletを表示するためのHTMLがありますよね。
HTMLにはAppletタグが書いてあり、そこにクラスを検索するパスを記述します。
swingのライブラリをダウンロードしたとのことですが、
それをARCHIVE属性に追加しなければ、ブラウザはどこにあるのか知りようがあり
ません。

こんな感じでしょうか。
<APPLET
 CODE="JavaSample.class"
 HEIGHT=200
 WIDTH=200
 CODEBASE="."
 ARCHIVE="swingall.jar"
>
</APPLET>

また、補足に書いてある例でうまくいかないのも同様で、
CODE属性に書いてあるクラス(HelloWorld )が、CODEBASEやARCHIVEで指定されたパスから見つからないから、ClassNotFoundExceptionとなるのです。

この回答への補足

CODEBASE="." を追加したら、サーバー上のアプレットは動作しましたがJavaコンソールに・・・

com.ms.security.SecurityExceptionEx[DemoApplet.init]: cannot access file C:\WINDOWS\Java\lib\swing.properties
at com/ms/security/permissions/FileIOPermission.check (FileIOPermission.java)
at com/ms/security/PolicyEngine.deepCheck (PolicyEngine.java)
at com/ms/security/PolicyEngine.checkPermission (PolicyEngine.java)
at com/ms/security/StandardSecurityManager.chk (StandardSecurityManager.java)
at com/ms/security/StandardSecurityManager.checkRead (StandardSecurityManager.java)
at java/io/FileInputStream.<init> (FileInputStream.java)
at java/io/FileInputStream.<init> (FileInputStream.java)
at javax/swing/UIManager$3.run (UIManager.java:754)
at javax/swing/SwingUtilities.doPrivileged (SwingUtilities.java:1611)
at javax/swing/UIManager.loadSwingProperties (UIManager.java:770)
at javax/swing/UIManager.initialize (UIManager.java:919)
at javax/swing/UIManager.maybeInitialize (UIManager.java:945)
at javax/swing/UIManager.getUI (UIManager.java:560)
at javax/swing/JPanel.updateUI (JPanel.java:110)
at javax/swing/JPanel.<init> (JPanel.java:66)
at javax/swing/JPanel.<init> (JPanel.java:99)
at DemoApplet.init (DemoApplet.java:28)
at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java)
at com/ms/applet/AppletPanel.securedCall (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)
com.ms.security.SecurityExceptionEx[DemoApplet.init]: Event queue access denied.
at com/ms/security/permissions/UIPermission.check (UIPermission.java)
at com/ms/security/PolicyEngine.deepCheck (PolicyEngine.java)
at com/ms/security/PolicyEngine.checkPermission (PolicyEngine.java)
at com/ms/security/StandardSecurityManager.chk (StandardSecurityManager.java)
at com/ms/security/StandardSecurityManager.checkAwtEventQueueAccess (StandardSecurityManager.java)
at java/awt/Toolkit.getSystemEventQueue (Toolkit.java)
at javax/swing/SystemEventQueueUtilities$SystemEventQueue.init (SystemEventQueueUtilities.java:134)
at javax/swing/SystemEventQueueUtilities$SystemEventQueue.get (SystemEventQueueUtilities.java:82)
at javax/swing/SystemEventQueueUtilities.postRunnable (SystemEventQueueUtilities.java:269)
at javax/swing/SwingUtilities.invokeLater (SwingUtilities.java:1128)
at javax/swing/JComponent.revalidate (JComponent.java:3383)
at javax/swing/JViewport.setView (JViewport.java:692)
at javax/swing/JScrollPane.setViewportView (JScrollPane.java:831)
at javax/swing/JScrollPane.<init> (JScrollPane.java:211)
at javax/swing/plaf/basic/BasicComboPopup.createScroller (BasicComboPopup.java:346)
at javax/swing/plaf/basic/BasicComboPopup.<init> (BasicComboPopup.java:223)
at javax/swing/plaf/metal/MetalComboBoxUI$MetalComboPopup.<init> (MetalComboBoxUI.java:42)
at javax/swing/plaf/metal/MetalComboBoxUI.createPopup (MetalComboBoxUI.java:67)
at javax/swing/plaf/basic/BasicComboBoxUI.installUI (BasicComboBoxUI.java:122)
at javax/swing/plaf/metal/MetalComboBoxUI.installUI (MetalComboBoxUI.java:52)
at javax/swing/JComponent.setUI (JComponent.java:260)
at javax/swing/JComboBox.setUI (JComboBox.java:144)
at javax/swing/JComboBox.updateUI (JComboBox.java:153)
at javax/swing/JComboBox.init (JComboBox.java:116)
at javax/swing/JComboBox.<init> (JComboBox.java:110)
at DemoApplet.init (DemoApplet.java:32)
at com/ms/applet/AppletPanel.securedCall0 (AppletPanel.java)
at com/ms/applet/AppletPanel.securedCall (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)
Swing: checked access to system event queue.

・・・と表示されました・・・これはIE上の問題なのですかね??
でも、動作はしましたので、ありがとうございます。

・・・ただ、デスクトップの「HelloWorld」は相変わらずです。

補足日時:2002/08/06 10:15
    • good
    • 0

本質的なことは、No.1さんがおっしゃるとおりなのですが、


なぜこうなるかというと…。

Swingは1.2から標準でついてきていますが、IEに付属のJavaVMはいまだ1.1です。
したがって、ブラウザについてくるjavaVMでは1.2で追加された機能は使えないわけです。
appletviewerはコンパイル環境のappletviewerを使っていると思うので、
問題なく動作します。

対応策その1:Plug-inを使用する。
 ブラウザのVMに頼らず、別途用意したjavaVMを起動するようになります。
 Appletを表示する環境にPlug-inを用意してもらう必要がありますが、
 最新のjava環境を使うことができます。

 利点:最新のjava環境を使用できる
 決定:使う人にPlug-inを入れてもらわなければならない。

対応策その2:JDK1.1用のswingを使用する。
 サーバにswingのライブラリをおいておけば、
 1.1用のSwingに関しては使用可能です。
 swingのライブラリをダウロードして使ってもらうことになるため、
 
 利点:クライアントにインストール不要
 欠点:でかいswingをダウンロードしなければならない。

参考URL:http://java.sun.com/products/jfc/download.html

この回答への補足

swingのライブラリをダウロードしサーバに追加しましたが、同じ現象になりました。

また、単純なHelloWorldで試したところ・・・

Error loading class: HelloWorld
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException: HelloWorld
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at com/ms/applet/AppletPanel.securedClassLoad (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)

・・・と表示されました。

一番疑問に思うのは、以前に動作していた物が動作しなくなってしまった事です。

補足日時:2002/08/05 11:23
    • good
    • 0

最近Javaから離れている為、勘違いした事を書くかもしれませんがご了承下さい。



>java.lang.ClassNotFoundException: javax.swing.JComboBox
まぁ、見たままなんですが、
SwingパッケージのJComboBoxが見つかりませんよ。と言っているので
最近、環境パスの変更とかファイルの移動とかしていないですか?

実在するSwingパッケージと環境パスが一致しているか確認して下さい。
たぶんそんな事だと思います。ではでは。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJAVAアプレットがブラウザで実行できない

JAVA超初心者です。
じつは、Java2SDK1.4を使ってコンパイルしているんですが、
コンパイルしてできた「classファイル」をブラウザで実行できないんです。
四角い灰色のものがでてきて、マウスを重ねると、
{ load: class **** not found }とステータスバーに表示されるだけです。
(*はファイル名)
appletviewerというJAVAの動作を見るものだと、実行できるのですが・・・。

Web上で配布されているclassファイルはブラウザでも実行できます。
配布されているのと同じソースでやっても自分でコンパイルすると、ブラウザで実行できません。

ブラウザはIE6なので、JAVAに対応してると思います。

どうすればいいのでしょうか?
コンパイルに問題があるのでしょうか?

Aベストアンサー

>CLASSPATHは設定されていませんでした。
>>基本的に 環境変数 CLASSPATH は設定しない方が良いですよ。
>と言われた通り設定しないでそのままにしておきます。

とは、どう言うことでしょうか?
どう言う確認をされましたか?
何を元にCLASSPATH は設定されていないと判断しましたか?
それじゃ、CLASSPATH を設定してみましたか?
とにかく、動かないのなら、確認できる全ての事を行って下さい。

>CODEBASEについてですが、
>MS-DOSとかでは「\」をつかいますが、
>HTMLのばあいは「/」をつかう気がするのですが・・・。
>まちがっていたら教えてください。

間違いです。
HTML が 「/」を使うと言うわけではありません。
基本的な事です。ご自分ではどこまで調べられましたか?
PATH と URL の違いを勉強してください。
そうすると、今回の場合、どちらを使うのかがはっきりするはずです。

こちらに関しても、CLASSPATH の時と同じです。
いろいろと考えられる限り設定を変更してテストしてみて下さい。

以前に私が紹介した Java House の「スペシャルトピック」は読みましたか?
その件については、一切触れておられないようですが。。。
CLASSPATH については、理解出来たのでしょうか?

いままでのご質問内容から kidou00さんの場合は、Javaの勉強をする前に
ファイルシステムについて勉強された方が良いかと思います。(今回はWindowsのファイルシステム)
ファイルシステムを理解せずに、プログラミングをしても決して良いプログラム
は出来ないと思います。
後、アプレットや、サーブレットを勉強する前には、インターネットの基礎知識
を勉強する必要があります。プロトコルや、URIに関しても理解していないと良い
プログラムは出来ません。
(完全に理解する必要はありませんが、概要は知っていないと駄目です)
もう少し視野を広げて勉強してください。

>CLASSPATHは設定されていませんでした。
>>基本的に 環境変数 CLASSPATH は設定しない方が良いですよ。
>と言われた通り設定しないでそのままにしておきます。

とは、どう言うことでしょうか?
どう言う確認をされましたか?
何を元にCLASSPATH は設定されていないと判断しましたか?
それじゃ、CLASSPATH を設定してみましたか?
とにかく、動かないのなら、確認できる全ての事を行って下さい。

>CODEBASEについてですが、
>MS-DOSとかでは「\」をつかいますが、
>HTMLのばあいは「/...続きを読む

QWindows7のIEでJavaアプレットの設定

いつもお世話になっております。

以下の環境でIEでJavaアプレットの設定をしたいのですが、カテゴリーとして出現しません。
アプレットは使用できるのですが、設定箇所を知りたいのです。
ご教授、よろしくお願いいたします。

● OS: Windows7
● ブラウザ: IE8、IE9
● JRE: 6-update26

● 手順:
IEの「ツール」-「インターネットオプション」-「詳細設定」をひらく。

※xpのIE8であれば、上記の「詳細設定」の画面にJava(Sun)というカテゴリーが出現しており、アプレットの使用を選択するチェックボックスがあります。Windows7だと同じ手順をふんでも出現しません・・・

Aベストアンサー

#2です。
今はもうXP使ってないので記憶があいまいで申し訳ない。
私がXP IE8の時の仮想マシンはSun Microsystems社製ではなく、
MSJVMを使ってました。
たぶんその関係もあるかも知れませんね。

「同じIE8」といってもXPと7ではバージョンが違います。
これも関係するかも知れない。

QCLASSPATHを設定しても、『ClassNotFound~』になってしまう

はじめまして、質問をさせていただきます。

JDBCを利用して、データベースにアクセスするため、2週間前から
javaを勉強している初心者です。
色々なサンプルを参考にして、javaコードを作成しましたが、
java実行時に『ClassNotFoundException』になってしまいます。

過去の質問から、No.952983やNo.957189を参考にさせていただき、JDBCドライバー
をダウンロードし、CLASSPATHの設定をしてみましたが変わりませんでした。
その後も色々と調べましたが、なぜCLASSPATH設定が有効にならないのか分かりません。
お手数かとは思いますが、御教授のほどよろしくお願いします。

サーバのOS :LINUX(FedoraCore5)
データベース :Postgresql8.1.4(rpmでインストール)
JDKのVer   :1.5.0_08
JDBCドライバー:postgresql-8.1-407.jdbc3.jar

↓.bash_profileの設定
export JAVA_HOME=/usr/java/jdk1.5.0_08
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/$JAVA_HOME/lib/postgresql-8.1-407.jdbc3.jar

↓『set』コマンドで確認したCLASSPATH
CLASSPATH=.:/usr/java/jdk1.5.0_08/lib/tools.jar://usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc3.jar

以上

はじめまして、質問をさせていただきます。

JDBCを利用して、データベースにアクセスするため、2週間前から
javaを勉強している初心者です。
色々なサンプルを参考にして、javaコードを作成しましたが、
java実行時に『ClassNotFoundException』になってしまいます。

過去の質問から、No.952983やNo.957189を参考にさせていただき、JDBCドライバー
をダウンロードし、CLASSPATHの設定をしてみましたが変わりませんでした。
その後も色々と調べましたが、なぜCLASSPATH設定が有効にならないのか分かりま...続きを読む

Aベストアンサー

jar xvf jar_filename

で、jarを展開できるので、ファイルの有無は分かるはずです。

ところで、以前の出力ですが

java.lang.ClassNotFoundException: org.postgresql.driver

なんかおかしくないですか?肝心のクラス名は?
パッケージ名しか載っていませんが、importの部分に

import org.postgresql.driver;

なんて書いてません?

Qアプレットの初期化されていませんと表示が

javaのGUIを独学中ですがアプレットを実行すると Start:アプレットは初期化されていません と表示されます。解決法をご教授お願いします。

Aベストアンサー

HTMLでの code の指定が間違っています。
code="Sample1.class" ではなくて code="Sample2.class" です。

Qシンボルが見つかりませんというエラーが理解できません。

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Image[3];
Thread t;
int index1 = 0;
int index2 = 0;
String msg = "";
String msg1 = "";

boolean state = false;
Button b1 = new Button("ぐー");
Button b2 = new Button("ちょき");
Button b3 = new Button("ぱー");

public void init(){
for(int i = 0; i<=2; i++){
img[i] = getImage(getDocumentBase(),"hanabi" + (i+1) + ".JPG");
}
add(b1);
add(b2);
add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
msg1 = "結果は・・";

}

public void paint(Graphics g){
g.drawImage(img[index1],350,30,this);
g.drawImage(img[index2],695,30,this);
g.drawString("コンピューター",420,300);
g.drawString("あなた",800,300);
g.drawString(msg,630,320);
g.drawString(msg1,550,320);
}

public void start(){
state = true;
t = new Thread(this);
t.start();

}

public void run(){
while(state){
index1++;
if(index1 == 3){
index1 = 0;
}
index2++;
if(index2 == 3){
index2 = 0;
}
repaint();
try {
Thread.sleep(60);
}catch(InterruptedException e) { }
}
}

public void actionPerformed(ActionEvent e){
if(state == false) {
start();
return;

}
state = false;
if(e.getSource() == b1) {
msg = "ぐー";
index2 = 0;
}

else if(e.getSource() == b2){
msg = "ちょき";
index2 = 1;
}

else if(e.getSource() == b3){
msg = "ぱー";
index2 = 2;
}
check();
repaint();
}

public void check() {
if(index1 == index2) msg ="あいこ";


else if (index1 == 0) {
if(index2 == 2) msg="あなたの勝ち";
else msg ="あなたの負け";
}

else if(index1 == 1) {
if(index2 == 0) msg="あなたの勝ち";
else msg="あなたの負け";
}

else if(index1 == 2) {
if(index2 == 1) msg="あなたの勝ち";
else msg="あなたの負け";
}

}
}

以下のようなじゃんけんゲームのプログラムを書いたのですが、「シンボルが見つかりません。」というエラーが表示されるのですが、エラーの意味が理解できず、解決できません。どこが間違っているのか教えていただけませんか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class janken extends Applet
implements Runnable, ActionListener {
private static final int EXTERNAL_BUFFER_SIZE = 128000;

Image image[] = new Imag...続きを読む

Aベストアンサー

「シンボルを見つけられません。」というエラーの下に何か表示がありませんでしたか?そこにヒントがあると考えられます。
シンボルを見つけられませんといエラーが表示される主な理由は4つあります。
(1)クラス、メソッド、変数などの綴りミスや定義していない変数を使用している可能性がある。
(2)コンストラクタを呼び出すときに、newを忘れている可能性がある。(3)公開されていないメンバーを呼び出している可能性がある。
(4)必要なimport文を記述し忘れている可能性がある。
ここでのあなたのエラーは(1)番ではないでしょうか?上記ではimageとなっている変数がimgになっていますね。
これはエラー表示をよく見ることで意外と簡単に解決できるのです。
ゆっくり丁寧にエラー表示を見るように心がけることが大事ですよ。

QIE11 64bitを表示するには

ネットトラブルというほどでもないですが教えて下さい。
現在IE11を使用したいます。
バージョンを見ますとbit数は何も書いてありません。という事は32bitという事で認識しています。
このファイルの保存場所はC:\Program Files\Internet Explorerになっています。
64bitも使ってみようと思い探すのですがどこにも見当たりません。

そこで調べたところデフォルトでは下記に格納されているようです
32bitは、"C:\Program Files (x86)\Internet Explorer\iexplore.exe"
64bitは、"C:\Program Files\Internet Explorer\iexplore.exe"
ということは私の場合は64bitが格納されている場所ということになりますがなぜか32bitのようです。
しかし"C:\Program Files (x86)\Internet Explorer\iexplore.exe"にはiexplore.exeの実行アイコンはありません。
又調べた結果、
インターネットオプションの詳細タブ→セキュリティ項目にある「拡張保護モードを有効にする」をONにしないとダメなようでチェックをONしました。
すると両方のパスに実行ファイルは存在するようになりました。
ただどちらもバージョンのbitの表示はありません。32bitのようです。
IE11にも32bit,64bit,がありますよね。プログラムが違うのですね。スタートメニューにも64bitの項目はありません。「新しいバージョンを自動的にインストールする」にチェックをいれていますので、その時64bitの方は削除されたのでしょうか、私のインストしているプログラムには1つしかないですが。

WINDOWS7 Pro IE11

ネットトラブルというほどでもないですが教えて下さい。
現在IE11を使用したいます。
バージョンを見ますとbit数は何も書いてありません。という事は32bitという事で認識しています。
このファイルの保存場所はC:\Program Files\Internet Explorerになっています。
64bitも使ってみようと思い探すのですがどこにも見当たりません。

そこで調べたところデフォルトでは下記に格納されているようです
32bitは、"C:\Program Files (x86)\Internet Explorer\iexplore.exe"
64bitは、"C:\Program Files\Internet Expl...続きを読む

Aベストアンサー

訂正。

誤:拡張保護モードをオフにすると、32bitモードで動作します。
誤:拡張保護モードをオンにすると、64bitモードで動作します。

正:拡張保護モードをオフにすると、64bitモードで動作します(デフォルトのモード)
正:拡張保護モードをオンにすると、32bitモードで動作します。

追記。

IE10、IE11を起動すると、実は、64bit版と32bit版の両方が同時に起動されます。

タスクマネージャーを見ると、2つが同時に起動されているのが判る筈です。

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Qimport java.applet.Applet;について

ソースの先頭にimport java.applet.Applet;と書かれたソースをコンパイルすると、ローカルのjava.applet.Appletを読み込んで*.classを作るのだと思うのですが、java.applet.Appletが見つかりません。
普通はどのあたりにあるのでしょうか?

Aベストアンサー

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時には上記のJRE側の rt.jar が使用されます。

ですから、コンパイル時、あるいは実行時にそれぞれのディレクトリに rt.jar がないとエラーが発生します。

ちなみに rt.jar の中身を確認したいのであれば、下記のコマンドをコマンドプロンプトから実行し、出力先のファイルをテキストエディタで開くと確認できます。

 cd C:\j2sdk\jre\lib   ← ディレクトリ移動

 jar tvf rt.jar > C:\Temp\result.txt ← rt.jarの中身をテキストファイルに出力

 notepad C:\Temp\result.txt   ← メモ帳で出力結果を表示


 出力結果のファイルには、java.applet.Appletであれば "java/applet/Applet" のように "." が "/" に置き換わって出力されています。

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時...続きを読む

QJavaアプレットからローカルJarを利用する方法

クライアントのローカルフォルダに格納されているJarファイルを
Javaアプレットから呼び出して使用することは可能でしょうか?

クライアントにC:\Applet\lib\app-test.jarの様に、jarファイルが格納されているとして、
Javaアプレットからこのjarを使用しようするには、どのような設定が必要でしょうか?

現在は、NoClassDefFoundErrorになってしまいます。

eclipseで開発するときは、ビルドパスに上記パスを設定するので、問題なく動作します。

また、app-test.jarをC:\Program Files\Java\jre1.5.0_22\lib\extフォルダに格納すれば、
正常に動作します。

CLASSPATHを設定すれば良いのかと思い、C:\Applet\lib\app-test.jarを
クライアントの環境変数(CLASSPATH)に登録しましたが、同じエラーが発生します。

C:\Applet\lib\app-test.jarを利用するために必要設定(環境変数、HTMLのobjectタグ、
java.policyなど)があれば教えてください。

以上

クライアントのローカルフォルダに格納されているJarファイルを
Javaアプレットから呼び出して使用することは可能でしょうか?

クライアントにC:\Applet\lib\app-test.jarの様に、jarファイルが格納されているとして、
Javaアプレットからこのjarを使用しようするには、どのような設定が必要でしょうか?

現在は、NoClassDefFoundErrorになってしまいます。

eclipseで開発するときは、ビルドパスに上記パスを設定するので、問題なく動作します。

また、app-test.jarをC:\Program Files\Java\jre1.5.0_22\lib\e...続きを読む

Aベストアンサー

テストに使ったコードはこんな感じです。

try {
File jarFile = new File("/tmp/app-test.jar");
URL[] urls = new URL[] { jarFile.toURI().toURL() };
ClassLoader parent = ClassLoader.getSystemClassLoader();
URLClassLoader ucl = new URLClassLoader(urls, parent);
Class cls = ucl.loadClass("Class1");
後はリフレクションを使ってメソッドを呼ぶなり何なりお好きにどうぞ
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

Class1がapp-test.jar内の他のクラスを必要とする場合は、明示的にloadClass()を呼ばなくても自動的にロードされます。

java.policyは面倒だったので何でもアリにしました。
grant {
permission java.security.AllPermission;
};

テストに使ったコードはこんな感じです。

try {
File jarFile = new File("/tmp/app-test.jar");
URL[] urls = new URL[] { jarFile.toURI().toURL() };
ClassLoader parent = ClassLoader.getSystemClassLoader();
URLClassLoader ucl = new URLClassLoader(urls, parent);
Class cls = ucl.loadClass("Class1");
後はリフレクションを使ってメソッドを呼ぶなり何なりお好きにどうぞ
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

C...続きを読む

Qappletviewerが起動しません。

applicationならばDOSプロンプトから起動するのですが。
尚、IEに関連付ければ動きます。
ClassNotFoundException,FileNotFoundExceptionが発生してしまいます。
理由がおわかりになる方、宜しくお願いします。

Aベストアンサー

だいぶまえの話で、いまさらな感じですが…
とっくに解決していますか?気づくのがおそくてごめんなさい。

>以前はきちんと動作していたんですが。環境の変化といえばJBuilderのインストール(使っていませんけれど)くらいですけど、それのせいだとは思えないので、

これ、関係ありそうです。
(勝手にWin環境だと解釈してますが…)
JBuilderはレジストリ書き換えて、Javaコマンドで呼び出されるコマンドを勝手に自分のものにするようにしてしまいます。Autoexec.batにパスかいてあってもJBuilderのほうが優先になっちゃいます。しかもこれはアンインストールしてもちゃんと直ってくれず、手動でレジストリの書き換えが必要です。

せっかくbatファイルを用意してるようですので、
パスの設定する一行書き加えて

SET PATH=c:\JDK1.3\bin;%PATH%
appletviewer GameMain5.java

とかするとどうでしょうか?
試してみていただけませんか?
(PATHは環境にあわせて変えてみてください。
 JDK1.1.xはCLASSPATHの設定も必要…でしたか?)

だいぶまえの話で、いまさらな感じですが…
とっくに解決していますか?気づくのがおそくてごめんなさい。

>以前はきちんと動作していたんですが。環境の変化といえばJBuilderのインストール(使っていませんけれど)くらいですけど、それのせいだとは思えないので、

これ、関係ありそうです。
(勝手にWin環境だと解釈してますが…)
JBuilderはレジストリ書き換えて、Javaコマンドで呼び出されるコマンドを勝手に自分のものにするようにしてしまいます。Autoexec.batにパスかいてあってもJBuilderのほう...続きを読む


人気Q&Aランキング