質問: ### 前提・実現したいこと eclipseではコンパイル可能で実行可能でしたが、自分でWindowsのコマンドプロンプトでコンパイルしようとするとエラーとなってしまいます。。 また、1ファイルの場合では自分でコマンドプロンプトでのコンパイルから実行まで可能できました。複数クラス(複数ファイル)になるとコンパイルエラーとなってしまいます。 ### 発生している問題・エラーメッセージ エラーメッセージ シンボルを見つけられません ### 試したこと なにか設定に不備があると思い各種サイトを見たのですが解決できず、「ここを確認したらよいかも」という点がありましたら、ぜひご教示いただけますと幸いです。どうぞよろしくお願い致します。
回答: 例として、Eclipseでmyprojectというプロジェクトを作成し、com.example.mysampleというパッケージを作成して、その中にMain.javaとSub.javaという2つのJavaソースファイルを作ったとしましょう。mainメソッドはMain.javaの中にあって、その中でSub.javaのインスタンスを生成しているような構成になっているものとします。そうすると、myproject以下のディレクトリーツリーはこんな感じになっているはずです。 ``` myproject ├ src │ └ com │ └ example │ └ mysample │ ├ Main.java │ └ Sub.java └ bin ``` Eclipseでは、ソースファイルはsrcの下に、コンパイルしたclassファイルはbinの下に配置するようになります。その結果通りにコマンドプロンプトでコンパイルしたい場合、まずmyprojectの直下に移動します。そこで、 ``` C:\hoge\fuga\myproject>javac -sourcepath src -d bin src\com\example\mysample\Main.java ``` と実行すれば、2つのソースファイルがまとめてコンパイルされて通るはずです。 或いは、 ``` C:\hoge\fuga\myproject>javac -d bin src\com\example\mysample\Sub.java C:\hoge\fuga\myproject>javac -d bin -cp bin src\com\example\mysample\Main.java ``` のようにソースファイルごとにコンパイルして、Main.javaのコンパイルのときには-cp(或いは-classpath)を付けて先にコンパイルしたSub.classを参照するようにしても通るでしょう。 コンパイルが完了すると、binの下にsrcと同じようなパッケージ名によるディレクトリー階層が出来て、その下にclassファイルが作られているでしょう。 これを実行したければ、 ``` C:\hoge\fuga\myproject>java -cp bin com.example.mysample.Main ``` のように完全修飾クラス名で指定すれば実行できます。ここでも-cpオプションの指定は必要です。 途中で間違った回答をしたり、後から回答を追記したりしています。いろいろ右往左往して申し訳ありません。