質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

7952閲覧

Eclipseで Programを実行しようとするとメイン・クラスが見つからなかったかロードできませんでした。

yamatera

総合スコア13

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/03/01 15:31

障害状況

   Eclipseで JAVA Programを実行しようとすると

      「エラー: メイン・クラス"パッケージ名.SystemOutPrint"が見つからなかったかロードできませんでした」

   というErrorMessageがでて、実行できない。 同様に、デバッグでも同様のMessageとなりました。

   注) SystemOutPrint・・・・ 動かそうとした JavaのProgram名

背景と調査

以前、Eclipseは、正常に導入され、Sourceの作成、実行、デバッグは、正常に稼働していました。 Diskの整理をする必要がでてきたので、EclipseをPleiadesのデイレクトリー以下丸ごとと

   EclipseのWorkSpaceもあわせて、別のデレクトリーへ移動しました。

   新しい位置のEclipseを立ち上げ、立ち上げ時に要求してくるWorkSpaceに移動後のWorkSpaceを指定すると、
正常?に稼働開始できたようにみえました。

   そこで、上記のSystemOutPrintというProgramを新規に作成し、実行しようとすると、上記Errorとなってしまいました。

   ちなみに、移動後のWorkSpaceの中の、Project名.src.パッケージ名 の中には、ちゃんと 新規作成したProgramである
SystemOutPrint.javaが保存されていました。

   しかしながら、移動後のWorkSpaceの中の Project名.bin.パッケージ名 の中には、SystemOutPrint.class は
作成されておりませんでした。

   さらに、昔作成し、WorkSpace移動したProgramを実行、デバックしてみると、正常?に稼働しているかにみえましたが
そのProgramに修正をかけて実行してみると、昔のままの作動をします。

   移動後のWorkSpaceのSourceを修正変更はできますが、実行デバックしようとすると、Eclipseは、どこか異なる
場所からProgramを参照しているように見えます。

Disk全体から SystemOutPrint を さがしてみると

          SystemOutPrint.java が WorkSpace内に1個(Project名.src.パケージ名の中)
Workspace外に4個

          SystemOutPrint.launch が WorkSpace内に1個(.metadataの中)

          SystemOutPring.class は どこにもありませんでした。

質問

   1. Eclipseは、実行デバックの際、どのディレクトリーからプログラムをさがすのでしょうか?
もしくは、さがす対象のディレクトリーを指定する方法はあるのでしょうか?

2. 実行デバックを正常に稼働させるには、どのようにしたらよいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/03/01 21:48

メニューのRun>debug configurations(日本語環境での名前は分かりません)で選択可能な構成がいくつかあるのですが、どれかが選ばれます。選ばれた構成のうち、(恐らく種類でいうとJava Applicationなので、そこのカテゴリにあるどれかなので)そこに設定されているProjectとMain classを実行しようとします。 初回は、その構成はないので、自分で種類を選択すると、ある程度自動的にクラスを見つけてくれたはずです。原則public static void Main(String[])を持っているクラスを選択してからデバッグ実行すれば、初回にそれが選択されたと思います。
yamatera

2019/03/02 09:28

public static void Main(String[])を持っているクラスを選択する事は、実施しています。 その証拠として、実行アイコンのプルダウンのリストには、そのMainを含んだプログラム名が 表示されます。 Eclipseの動きを観察すると、まず Editorによって、WorkSpaceの中(Project名.src.パッケージ名)に Program名.java というFileが作成され、 実行デバックの際に、 Project名.bin.パッケージ名 のなかに Program名.class というFileが作成 されるように思えますが、今回それが作成されません。 どこか、別のディレクトリー(移動前の?)へ作られたのかと、Disk全捜索しましたが どこにもありませんでした。 なお不思議な事に、新規作成ではなく、昔(移動前)作製して、WorkSpaceで移動したProgramは 実行デバッグ稼働するようにみえますが、そのSourceを修正しても、昔のままのように動きます。 そうすると、この時のProgramはどこから持ってきたのか、まったくの謎です・・・が。 この昔のProgramは当然WorkSpaceごと移動してしてきているので、Project名.bin.パッケージ名 のなかに Program名.classは存在しています。 ですから、実行デバックはこの昔のままのProgramを 使用しているのでしょう。 すると、問題は、なぜ新規に作製されたProgramの .class File が作製されないのか。 もしくは、移動後の Project名.src.パッケージ名 の中の Programを修正しているにもかかわらず どうして昔のままの .class File を実行してしまうのか  というのが 問題のようにおもえます。
wwbQzhMkhhgEmhU

2019/03/02 13:39

まずはPackage ExplorerでMainメソッドを含む当該クラスを選択した状態で、メニューからRun>Debug As...>Java Applicationを選んでください。
yamatera

2019/03/02 14:11

まずはPackage ExplorerでMainメソッドを含む当該クラスを 選択した状態で、メニューからRun>Debug As...>Java Application を選んでください。 ==>Eclipseの移動前に作成した、Programであれば   稼働するようにみえますが、昔のままの状態でうごきます。   しかしこのProgramSourceを修正しても、修正は反映されず、また   ブレイクポイントを変更しても、昔のままです。 ==>Eclipseの移動後に、新規作成したProgramであれば   「エラー: メイン・クラス"パッケージ名.Program名"が    見つからなかったかロードできませんでした」    となります。 実行やデバッグのやりかたや、そのときの指定の仕方に 不備はないつもりです。 移動前に問題なく実施していた方法と、寸分の狂いもない 方法で実施しています。 Eclipseを移動したことによって、Eclipse導入時に Eclipse自身が認識した、Directory構成と、 移動後のDirectory構成に差が生じている ことに起因しているのではないかと想定して この質問を立ち上げております。 それで、EclipseがどこからProgramを参照しようとしているか 知りたいとの質問に、いたったわけです。
wwbQzhMkhhgEmhU

2019/03/02 14:35

質問を改めて読み直したのですが、これ、ワークスペースのディレクトリを移動してるのがまずいですね。 ワークスペースに.metadataってフォルダがあるのですが、ここにEclipseの各種設定情報とか諸々が保管されています。恐らくこの中に相対パス指定でないものがあったのではないか?と思います。確かソースをリンクで入れている場合など、ここに情報が入っていたと思うので、今回はそれじゃないかなぁと勝手に思ってます。 私がやるなら選択肢は以下のとおりです。リスクもあるので、自分で考えて決めてください。 (A).metadataの中を少しずつ消していく 正常な状態に近くなるとは思いますが、必要な情報を削ると後が怖いです。どうしようもない場合は全消しとかもしますが、個人的には基本しないです。 (B)テキストエディタとかでクラス名やプロジェクト名をfind-grep フルパス指定のものを見つけて正しい状態に変えていくと動くかもしれません。 (C)プロジェクトをインポートし直す 古いやつが壊れてなくて簡単に出来るのであれば、これかなぁ
yamatera

2019/03/02 16:00

どうやら、問題の本質に突き当たったみたいです。 ワークスペースにある.metadataの中を詳しく調査すると 新規に作成した Program名.lanunch だけでなく   .metadata\.plugins\org.eclipse.jdt.launching  というFolderがあり、この中に   .install.xml   .libraryInfos.xml  というfileがあって、ここに導入時の Direcrory構成が すべて記録されておりました。 したがって、Eclipse を単純に Directory移動したため それらの情報はすべて無効となってしまっています。 移動にあわせて、そこに記載してある Directory構成情報を すべて、移動後の状態に書き換える必要があるように みうけられました。 EclipseやPleiadesの参照Library等  記載されている項目が大量にあり とてもすぐに書き直せるしろものではありません。 結論としては Eclipseは、導入時のDirectory構成を 記憶しており、勝手に Directory間で 移動したり Directory名を変更してはいけない。  ・・・・・・ とのことの様です。 よって、処置としては、移動した Eclipseを丸ごと消去して 新しいDirectoryの下に Eclipseを再導入することにいたします。 個々に作成した Programは、プロジェクトごとインポートし直す ことにしました。 想定していた "落ち" ではありましたが これで、ふんぎりがつきました。 いろいろ情報をいただけて、ありがとうございました。
guest

回答2

0

Javaのプログラムは、
public static void Main()
の関数から実行することになってます

最初に呼び出されるクラスのメソッド

それがちゃんとあるでしょうか

投稿2019/03/01 22:33

編集2019/03/02 03:37
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamatera

2019/03/01 23:23

public static void Main() は存在しています。 Eclipseを移動する前には、正常に稼働に稼働できていたProgramのSourceを、そのまま貼り付けても、 同じErrorとなります。
y_waiwai

2019/03/02 03:38

そのコードを提示しましょう
yamatera

2019/03/02 11:58

解析に使用しているProgramは、以下です。 package 基本機能; public class SystemOutPrint { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ System.out.println("AAA"); System.out.println("BBB"); SystemOutPrint f = new SystemOutPrint(); } SystemOutPrint() { System.out.println("CCC"); System.out.println("DDD"); } } このProgramだけでなく、以前正常に実行デバックできていた どのProgramでも、新規作成で、丸ごと貼り付けていても 同じErrorとなります。 そのProgramをWorkSpaceで持ってきた場合は、 すでに、Project名.bin.パッケージ名 の中に、Program名.class が作成されているので、それを実行するみたいです。 さらにそのProgramのSourceを修正しても、Program名.class は 修正されないみたいで、修正は反映されず、もとのままのごとく 稼働します
y_waiwai

2019/03/02 12:00

そういうことなら、Eclipse自体を一旦アンインストールして、改めてインストールし直してやってみよう。
yamatera

2019/03/02 12:45

UnInstallして、もう一度いれなおすことは、 最初から想定していました。 いずれ、そのつもりです。 今回、まだ実施はしていませんが、Eclipseは、過去何回も いろいろなPCに導入して使用しております。 私がこの teratail に質問として掲載したのは 当初に記述した通り ●なぜこんな現象が発生したのか ●Eclipseは、SourceのFile修正時や実行デバックのおりに  どのディレクトリーを参照しているのか。 ●どこにその情報をもち  それらの指定を明示的に指定変更することは可能か など、Eclipseの仕組みについての情報が 得られることを期待して、質問させていただきました。 当質問欄で、追加情報を求めてくる回答者のかたも いらしゃるので、それに対応できるように 現状を維持しています。 Disk内の整理やDirectory名の変更 また、複数のWorkSpaceを使いまわしたい方も 多いと思います。 その時、私と同じような問題につきあたる人 もいるかと思い、できれば、再導入でなく 原因や仕組みを解析した上での解決を したいと考えています。
guest

0

自己解決

質問趣旨とは異なりますが、再導入することで、障害は回避いたしました。

投稿2019/03/05 07:38

編集2019/03/05 22:02
yamatera

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問