-PR-
解決済み

JDKをインストールしたのですが、、、

  • 困ってます
  • 質問No.108469
  • 閲覧数44
  • ありがとう数7
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 37% (31/83)

こんばんは。javaの勉強をしたいなぁと思ったのでJDK1.3を雑誌の付録CDを使ってインストールしました。そしてプログラム作ってコンパイルまでは行ったのですが、実行ができないのです。
エラーメッセージはExceptioninthread"main"java.lang.NoClassDefFoundError:ファイル名
とでていました。
どういった理由が考えられるでしょうか?多分プログラムは間違ってないと思うのですが、、、
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 49% (139/279)

プログラム自体に問題はありません。moyuruさんの指摘が正解ですね。

CLASSPATHは不思議な動きをします。
Java2以降の場合ですが、

□CLASSPATHに指定がされていない場合
カレントディレクトリとJAVA_HOMEで指定されたディレクトリのlib/tools.jarとJAVA_HOMEで指定されたディレクトリの/jre/lib/extが対象になります。

□CLASSPATHに指定がされている場合
CLASSPATHに定義されたディレクトリ、jarとJAVA_HOMEで指定されたディレクトリのlib/tools.jarとJAVA_HOMEで指定されたディレクトリの/jre/lib/extが対象になります。

つまり、CLASSPATHに指定をするとカレントディレクトリが検索対象からはずれてしまうのです。このため、

SET CLASSPATH=.;C:\TOMCAT\Lib・・・・

のように、カレントディレクトリを検索するように、.の指定が必要になるのです。
お礼コメント
mezirosinji

お礼率 37% (31/83)

ありがとうございました。やっと動きました。
パスについては本やホームページにたくさん載っていましたが、こんな事はひとつも書いてありませんでした。
皆さんどうやって知ったのでしょう?常識なのでしょうか?
とにかく本当に助かりました。ありがとうございました。
投稿日時 - 2001-07-25 05:11:21

その他の回答 (全4件)

  • 回答No.1
レベル11

ベストアンサー率 37% (110/293)

ええと、hoge.javaというファイルにプログラムを作成し、
mainメソッドがあるクラス名もhogeだとします。

コンパイルするとhoge.classをはじめとするいくつかのclassファイルが
できるはずです。(hoge.classしかないかもしれません)

それで、実行するときは
java hoge
と入力するのですが、hoge.classまで入力していないでしょうか。
あるいは、そのclassファイルがあるディレクトリで実行しているでしょうか。
そうでない場合は適切にclassファイルの場所を指定する必要があります。
補足コメント
mezirosinji

お礼率 37% (31/83)

早速の回答ありがとうございます。

はい。実行するときは java Test としています。(ファイル名はTest.java)
ディレクトリもそのファイルがあるところで実行しています。
私は学校のパソコンではすでにJDKを経験済み(とは言ってもちょっとかじった程度ですが)なので、多分コマンド関係は大丈夫だと思うんですよ。
でも、パソコンについてはほとんど素人でして、設定の仕方に問題があるのかなと思っています。
もし、これかなっていうのがあればぜひ教えてください。
ちなみにソースは
class Test{
public static void main(String args[]){
int A,B;
A=1;
B=2;
int C=A+B;
System.out.println("A+B="+C);
}
}
です。

MS-DOSで
javac Test.java
java Test
こう入力しています。

OSは WINDOWS95 です。
投稿日時 - 2001-07-24 05:12:48


  • 回答No.2

クラスパスが通ってません。
java -cp . test
か、
Autoexec.batに
set classpath = .
を追加しましょう。

トップからJDKで検索すれば同じ質問が山ほどあります。
補足コメント
mezirosinji

お礼率 37% (31/83)

参考URL等を頼りにやってみたのですが、どうしても出来ません。

Autoexec.bat

@ECHO OFF
rem C:\PROGRA~1\MCAFEE\VIRUSS~1\SCANPM.EXE C:\
rem @IF ERRORLEVEL 1 PAUSE
SET PATH=%PATH%;C:\jdk1.3\bin
SET CLASSPATH=C:\Program Files\PD2\AdobeConnectables;C:\jdk1.3\bin\program
loadhigh c:\windows\nlsfunc.exe c:\windows\country.sys

追加したのは
SET PATH==%PATH%;C:\jdk1.3\bin\

SET CLASSPATHの;C:\jdk1.3\bin\program
の部分なんですが、どこが間違ってるか教えてはいただけないでしょうか?
binの下のprogramはソースファイルが入っているディレクトリです。
投稿日時 - 2001-07-24 15:32:12
お礼コメント
mezirosinji

お礼率 37% (31/83)

ありがとうございました。
投稿日時 - 2001-07-25 05:12:50
  • 回答No.4
レベル10

ベストアンサー率 35% (56/160)

うーん、はずしてるかもしれませんが...

実行するときのコマンドのパラメータは、どのようにしていますか?
ソースが sample.java の場合、javacすると sample.class ができますが、
これを実行するには、 java sample となります。 java sample.class
ではありません。javaコマンドのパラメータは、ファイル名ではなく、
クラス名でなければいけないからです。
この点は、私もやった間違いなので、もしや...と思って回答してみました。

OSがファイル名と拡張子の区切り文字として使用している「.」は、
Javaでは、クラスの区切り文字です。
つまり、java コマンドのパラメータを sample.class と
してしまうと、sample パッケージの class クラスを java しなさい、と
言っていることになってしまいます。
そういうクラスは存在していないので、現象のようなエラーメッセージが
出ているのではないでしょうか?
お礼コメント
mezirosinji

お礼率 37% (31/83)

ありがとうございました。
投稿日時 - 2001-07-25 05:12:06
  • 回答No.5
レベル11

ベストアンサー率 37% (110/293)

皆さんがおっしゃっているように、CLASSPATHに.を追加すると
カレントディレクトリをCLASSPATHの対象にするんでしたね。
忘れてました。私もそうなってました(^^;
お礼コメント
mezirosinji

お礼率 37% (31/83)

ありがとうございました。
投稿日時 - 2001-07-25 05:13:22
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-

特集


専門家があなたの悩みに回答!

ピックアップ

ページ先頭へ