シンボルを見つけられません-エラーの発生原因と解消方法

このQ&Aのポイント
  • 現在大学でJavaを勉強しており、家のパソコンで開発環境を整えようとしていますが、「シンボルを見つけられません」というエラーが発生しました。
  • Test.javaをコンパイルする際に、Stack.javaのシンボルが見つけられずエラーが発生しています。
  • 問題の原因は家のパソコンの設定にあり、設定を修正することで解消できます。
回答を見る
  • ベストアンサー

「シンボルを見つけられません」というエラーの発生原因

現在大学でJavaを勉強しており、家のパソコンで開発環境を整えようとしていますが、不具合が発生したので質問させてください。 まず、kadaiというフォルダに、「Test.java」「Stack.java」というファイルがあり、Test.javaの中にmain関数が、Stack.javaにStack関数がそれぞれ入っています。 コマンドプロンプトを用いてTest.javaをコンパイルしようとしたところ、「シンボルを見つけられません シンボル:Stack」というエラーが発生してしまいました。 大学では、main関数のあるファイルをコンパイルすれば、Stack.javaも自動的にコンパイルされると言われ、実際それで実行できました。 恐らく家のパソコンの設定に不備があるのでしょうが、どうすれば解消できるのでしょうか? ところどころ日本語がおかしくてすみません。

  • Java
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

コンパイルはどのように実行していますか? antですか?javacですか? antであれば、xmlの内容、 javacであれば、引数はどのように指定していますか? >「シンボルを見つけられません」というエラーの発生原因 は「Stack.java」がコンパイルされていないからなので、 はじめに「Stack.java」をコンパイルしてあげれば、解消すると思われます。 > main関数のあるファイルをコンパイルすれば、Stack.javaも自動的にコンパイルされると言われ ということは、自動的にコンパイルされる仕組みがあるはずですので、 そこを理解しないと同じ環境にはできないですね。

関連するQ&A

  • シンボルを見つけられませんというエラーでコンパイルできない

    こんにちは。 Test.javaとTest2.javaというファイルを作りコンパイルしようとしたんですがタイトルのエラーが出てコンパイルできません。全く意味が分からなくて困ってます。 test.javaの中で Test2 test2 = new Test2(); という形でTest2クラスのインスタンスを生成しています。 同じフォルダの中にあるのに見当たらないというのはどうにも分かりません。 環境変数は CLASSPATH . PATH C:\Program File\Java\jdk1.5.0_06\bin となってます。

    • ベストアンサー
    • Java
  • error LNK2001: 外部シンボル "_main" は未解決です

    VisualC++6.0で、新規作成→win32 Dinamic-Link Libraryでプロジェクト を作成し、dllファイルを作っています。 今までは、上手くコンパイル出来て、dllを作れていました。 友人の作ったライブラリにリンクして、ソースファイルで そのライブラリの関数を使って、コンパイルすると、 LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。 というエラーが出て困っています。 今、プロジェクトの設定→リンク→アウトプットの エントリポイントシンボルはDllEntryPoint@12となっています。 どうしたら良いでしょうか? どなたかご教授くださると助かります。 ちなみに、ライブラリの関数をコメントにすると、コンパイル出来ます。

  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    # 2342062 ではお世話になりました。もう少し質問を明確にします。よろしくお願いします!! CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main { public static void main(String[] args) { Sub x = new Sub(); x.test(); } } --- Sub.java --- public class Sub { public void test() { System.out.println("Sub !"); } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main {  public static void main(String[] args) {   Sub x = new Sub();  x.test();  } } --- Sub.java --- public class Sub {  public void test() {   System.out.println("Sub !");  } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • 未定義シンボルエラー

    現在、HPサーバからAIXサーバへのアプリ移行中なのですが、 未定義シンボルエラーが発生し対応方法に 困っています。 ご教授のほど、よろしくお願いいたします。 未定義シンボルエラーの関数は、 .iconv、iconv_openの2つです。 このアプリの共通部分でオブジェクトを作成していて、この関数(.iconv、iconv_open)のシンボルをアーカイブファイルに書きにいっています。 このiconvを使用する機能のリンク時にこのアーカイブファイルを 参照しているみたいなのですが、未定義シンボルエラーになり エラーになってしまいます。 アーカイブファイルの状態は、未定義シンボルです。(nmコマンドで 調べました)HP、AIX共に、同様。ですが、HPではすんなり通ってしまいます。 よろしくお願いいたします。

  • シンボルを解決できません(初心者)

    一つのプログラムに対して、いくつかのファイルに分けて 記述されているとき、 たとえば、ファイル A.java と B.java があって 【A.java】 package shop;  ・  ・  public class Shop {   ・   ・   ・ } 【B.java】 packeage shop;  ・  ・ public class Buy(Shop shop){ } という感じで、A.java内で定義したクラス型を他のファイルで使うと、 コンパイル時に、「シンボルを解決できません」というコンパイルエラーが出て コンパイルできません。 こういう場合はどうすれば、良いのでしょうか? 初心者なので、非常に初歩的な質問かと思いますがよろしくお願いします。

    • ベストアンサー
    • Java
  • CLASSPATHを設定→エラー!!??

    Main.java Sub.java を作りました。 デフォルトの状態(CLASSPATHに何も設定していない状態)で javac Main.java とすると問題なくコンパイルできるのですが・・・しかし、   export CLASSPATH=.:~/myclasses などのように、CLASSPATH を設定すると、「シンボルを解釈処理出来ません」というコンパイルエラーが出ます。 なぜでしょうか? CLASSPATH に カレントディレクトリを設定したにもかかわらず、Main.java Sub.javaがあるディレクトリでコンパイルしてもエラーが出ます。 ちなみに、   export CLASSPATH= のように、CLASSPATHを空にすると、またコンパイルが通るようになります。

    • ベストアンサー
    • Java
  • エラーの原因がわかりません

    JAVA初心者ですが、ファイル入力を行うプログラムを実行 すると、エラーが出ますが、そのエラーの原因が まったく見当がつきません。 誰か教えてください。 ------------読み込みデータ(loc.dat) 2 11 1 4 1 5 7 1 3 7 7 2 12 11 1 4 1 11 12 4 1 5 3 1 1 11 13 4 1 5 2 1 -------------プログラム import java.io.*; class ExReader {   public static void main(String[] args) { try { //読み込みファイル指定 FileReader fr = new FileReader("loc.dat"); BufferedReader br = new BufferedReader(fr); //ファイルから1行ずつ読み込む String s; while ((s = br.readLine()) != null) { System.out.println(s); } //読み込みファイルをクローズする br.close(); } catch (Exception e) { System.out.println("err: "+e); System.exit(1); } } } ---------------コンパイル結果 C:\JAVA\sim>javac ExReader.java ExReader.java:7: シンボルを解決できません。 シンボル: コンストラクタ FileReader (java.lang.String) 場所 : FileReader の クラス FileReader fr = new FileReader("loc.dat"); ^ ExReader.java:8: シンボルを解決できません。 シンボル: コンストラクタ BufferedReader (FileReader) 場所 : java.io.BufferedReader の クラス BufferedReader br = new BufferedReader(fr); ^ エラー 2 個

    • ベストアンサー
    • Java
  • シンボルを解決できません・・・?

    Java初心者です。 public class mondai5 { public static void main(String args[]) { String str = "abc"; if( str != null && str.index0f('a') != -1) { System.out.println("OK"); } else { System.out.println("BAD"); } } } これをコンパイルをしようとすると、このような表示が出ます。 シンボルを解決できません。 シンボル:メソッドindexOf(char) 場所:java.long.Stringのクラス   if( str != null && str.indexof('a') != -1)              ^ なにをしたらいいのかわかりません。 教えてください。

    • ベストアンサー
    • Java
  • コンパイルが通らない原因は?

    初心者な質問で大変申し訳ありません。 宜しければ教えていただけますでしょうか? 現在、Javaの学習をしていまして、 教材のソースをコンパイルしたところ、 エラーになってしまい困っております。 内容としましては、 サーブレットとBeansの連携プログラムです。 サーブレット:MvcControl1.java Beans:MvcBean1.java サーブレットでMvcBean1をインスタンス化して いるので、先にMvcBean1をコンパイルし、 次に同フォルダ(Dir)内のMvcControl1をコンパイル しようとしたところ、 MvcControl1.java:17: シンボルを解決できません。 シンボル: クラス MvcBean1 場所 : chap8.MvcControl1 の クラス MvcBean1 mvcbean1 = new chap8.MvcBean1(); // インスタンス化 ^ MvcControl1.java:17: シンボルを解決できません。 シンボル: クラス MvcBean1 場所 : chap8 の パッケージ MvcBean1 mvcbean1 = new chap8.MvcBean1(); // インスタンス化 ^ エラー 2 個 と、エラーが出てしまいます。 MvcControl1と同じディレクトリーに MvcBean1のクラスファイルを置いているのですが、 何が原因かわかりません。 宜しければ教えて頂けませんでしょうか? お願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう