作成したJavaのソースをjavacでコンパイルを通し、
そのあとにjavaコマンドで実行を通したところ、
以下のようなエラーメッセージが出力され実行できませんでした。
(作成したクラスファイルは「EdgeDetection.class」です。)
-------------------------------------------------
C:\TEMP>java -cp . EdgeDetection
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at EdgeDetection.main(EdgeDetection.java:31)
-------------------------------------------------
このエラーを解消するためにもクラスパスの設定(-classpathオプション)もしましたが、駄目でした。
この現象を解決するには、どのようにしたらよろしいのでしょうか?

A 回答 (1件)

ちなみに実行しようとしているEdgeDetection.classは前回質問


されましたコードが書かれたファイルでしょうか?
もしそうなら前回のクラスはGeomLineという名称でしたので
クラスファイル名もGeomLine.class(コンパイル前だとGeomLine.java)
にしなければいけません。(ファイル名とクラス名が同じでなければいけませんので)
全然関係なかったらごめんなさい。←補足をいただけると幸いです。(^^ゞ
    • good
    • 0
この回答へのお礼

ご指摘のとおり、コンパイル後にファイル名を
一部変えてました。原因はそれだったようです。
ありがとうございました。

お礼日時:2001/01/06 13:27

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

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

Q「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」エラー

Oracle9i R2にJDBCで接続してCUSTOMER表のレコード件数を調べる単純なJavaプログラムをつくろうとしています。

以下のソースをOracle端末上で実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」というエラーメッセージが表示されます。

環境設定としてCLASSPATHにclasses12.zipのパスを通しました。

-------------------------------------------------
// JDBC APIのインポート
import java.sql.*;class CUSTOMER {
public static void main (String args[])
throws SQLException, ClassNotFoundException {

// JDBC Driverの登録
Class.forName("oracle.jdbc.driver.OracleDriver");

// Oracle9iに接続
Connection conn =
DriverManager.getConnection ("jdbc:oracle:thin@192.168.0.10:1521:testdb", "test", "test");

// ステートメントを作成
Statement stmt = conn.createStatement();

// 問い合わせの実行
ResultSet rset = stmt.executeQuery("SELECT COUNT(*) FROM CUSTOMER");

// 問い合わせ結果の表示
while ( rset.next() ) {
// 列番号による指定
System.out.println(rset.getInt(1) + "\t" + rset.getString(2));
}

// 結果セットをクローズ
rset.close();

// ステートメントをクローズ
stmt.close();

// 接続をクローズ
conn.close();
}
}
-------------------------------------------------
何かおわかりの方いらっしゃいましたら教えて下さい。宜しくお願いします。

Oracle9i R2にJDBCで接続してCUSTOMER表のレコード件数を調べる単純なJavaプログラムをつくろうとしています。

以下のソースをOracle端末上で実行すると「Exception in thread "main" java.lang.NoClassDefFoundError: CUSTOMER」というエラーメッセージが表示されます。

環境設定としてCLASSPATHにclasses12.zipのパスを通しました。

-------------------------------------------------
// JDBC APIのインポート
import java.sql.*;class CUSTOMER {
public static void main (String args[])
...続きを読む

Aベストアンサー

thin@ではなくthin:@です。

Q Exception in thread "main" java.la

 Exception in thread "main" java.lang.StackOverflowError
というエラーが出ます

 moji()にtestという変数をいれてやり、mainから、書かそうとしていますが、
 Exception in thread "main" java.lang.StackOverflowError
というエラーが出ますが、何故かわかりません。
 宜しくお願いします。

************************************************************
public class ArgsTest2
{
public static void main(String args[])
{
moji();
}

public static void moji()
{
String[] test = {"abcde","fghij"};
main(test);
}
}

Aベストアンサー

ユーザ定義関数(moji)がmain関数を呼ぶことができるのか
分かりませんが、できたとしてもこのコードでは、

main()→moji()→main()→moji()・・・

の無限ループになりますね。

文字を出力するコードもありませんし、
もう一度落ち着いて考え直してみてください。

QException in thread "main" java.…でも。

Javaの初心者です。
仕事で他の方が作ったプログラムをいじることになりました。
あるclassファイルを実行しようとしたところ、javaコマンドで実行しようとしたところ、タイトルにあるように、Exception in thread "main" java.lang.NoClassDefFoundError:というエラーメッセジーが出ました。
いろいろ調べた結果、「:」以降に出てくる名前のクラスが見つからず、大半の場合は、CLASSPATHの指定がされていなかったり、まちがっていることが分かりました。
ただ、今回、表示されたのは、こんなクラス名なんです。
org/apache/bcel/generic/ATHROW

bcel-5.1.jarというファイルはあるのですが、これをどこかに置いたら解決するものなのでしょうか?
ためしに、実行しようとしたclassファイルと同じディレクトリに置いてましたが、何の効果もありませんでした。

もしお分かりになる方がいらっしゃいましたら、よろしくお願い致します。

Aベストアンサー

CLASSPATHにそのjarファイル(のフルパス)を追加してください。

jarファイルの中には、classファイルが入っています。
通常はCLASSPATHには、classファイルのあるディレクトリを指定しますが、
jarファイルに入っているclassファイルを呼び出したい場合は
jarファイルそのものをCLASSPATHに追加します。

QException:java.lang.NullPointerException って?

WinXPproを家族で使用しています。
制限ユーザーの娘が「お絵かき掲示板」を利用しようとすると
[Exception:java.lang.NullpointerException]とエラーメッセージが出て使えなくて困っていると言います。管理者権限の私のところで試しにやってみると、上記のエラーメッセージは出なく使えるんです。どうすれば、制限ユーザーも使えるようになるのでしょうか?

ちなみに、Javaのサイトから、最新版の
[J2SE v1.4.0_1]ダウンロード→インストールしてあります。

Aベストアンサー

よく分かりませんが、外してたら、ごめんなさい。

 環境変数設定で「システム環境変数」に設定してますか?管理者さんの「ユーザ環境変数」に環境設定をすると、他のユーザはJavaなど使えませんよ。

 インターネットエクスプローラのJavaに制限を設けているとか?それに関しては、過去ログにたくさんあります。参考URLでどうぞ。下のほうです。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=316419

QEclipseで新規クラスを作成時、スーパークラスをjava.lang.Object以外にするには?

最近Eclipseを使い始めましたが、パッケージエクスプローラがよくわかりません。

Javaプロジェクトを新規に作成し、
インポートを使って既存のjarファイルをそのプロジェクト内に配置しました。
その後、プロジェクトフォルダを右クリックし、
「ビルド・パス」-「ビルド・パスの構成」から
「ライブラリ」タブの「JARの追加」から先述のjarファイルを選択しました。

これでビルド・パスは通ったと思ったのですが、
新規クラスを作成する際にスーパークラスは「java.lang.Object」しか選択できず、
追加したJARにあるクラスが選択できません。

新規クラス作成時のウィザード画面で追加したJARにあるクラスを
選択するにはどうすればよいのでしょうか?
また、そもそもこのやり方でビルド・パスは通っているのでしょうか?

以上、よろしくお願いします。

Aベストアンサー

プロジェクトのプロパティウインドウを呼び出し、Javaのビルド・パスの「ライブラリ」に、追加したJarが入っていますか? 入っていれば、それで設定はOKのはずです。

ちなみに、java.lang.Objectしか出てこない、というのは、どうやったのでしょうか。新規クラス作成のウィザードで、スーパークラスの選択ダイアログを開いて設定をしたのでしょうか。ここは、初期状態ではjava.lang.Objectと入力されています。これに一致するものしか表示されませんから、当然ですがObjectしか表示はされません。

書かれているjava.lang.Objectを消して、パッケージ名の最初の1文字をタイプすると、それに一致する項目がずらっと現れるはずです。(何もタイプされていない状態だと何も表示されません。必ず、パッケージ名の最初の文字をタイプする必要があります)


人気Q&Aランキング

おすすめ情報