今だけ人気マンガ100円レンタル特集♪

Eclipseを使っています。JAVAで4つほどパッケージを作り、分野ごとに短い練習用のプログラムを作って勉強して来ました。

ところが4つ目のパッケージを作った時から実行させたいクラスではなく、全然別のところにある関係ないプログラムを実行するようになってしまいました。

Eclipseの実行のアイコンの▼を押せば目的のプログラムを走らせるところまでは、分かりましたが、その一覧の中に実行させたいプログラムはありませんでした。

ネットでも色々調べましたが、私はここでギプアップです。どなたか私が新たに作成したプログラムを実行させる方法を教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

どうも状況がつかめませんが、



Eclipseはプログラムを実行する際、「実行の構成」が必要で、それに基づいてプログラムが
実行されることを理解されていますでしょうか?

実行ボタンの▼でドロップダウンされる一覧は「過去に」実行した「実行構成」の一覧で、
「実行構成」を素早く実行するためのものです。プロジェクトを作成しても自動的には追加されません。

また、「実行」ボタン押下は最も最近***実行できた***「実行構成」を実行します。

「実行の構成」は、プロジェクトの右クリック→[Javaアプリケーションの実行]や
メインクラスの右クリック→[Javaアプリケーションの実行]などで、ほとんどの場合
メインクラスのクラス名から名づけられ自動生成されます。名前は後で「実行」→「実行構成」で
「実行構成」を選び、好きに変更できます。

もし、メインクラスの右クリックで「Javaアプリケーションの実行」が現れないということなら
おそらく、プログラムに問題があり、プロジェクトを実行できないからなのでしょう。Eclipseが自動で
プロジェクトの実行構成を作れないのです。問題ウィンドウなどをよく見て、エラーメッセージを
確認してください。メインクラスに 所定の形式の mainメソッドがないとか?
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。全部、分解して一からプロジェクトを作り直し、そちらに移動したら無事に動きました。一体何だったのか、今だわからずです。

お礼日時:2016/01/13 05:46

プログラムのメインクラスを右クリックして


「実行」では駄目ですか?
    • good
    • 0
この回答へのお礼

ご回答有り難うございます。実行の構成が出てきました。これで何とかいきそうかなと思ったのですが、肝心の私のプログラムがリストの一覧に出てきませんでした。

お礼日時:2016/01/12 04:56

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QEclipseのデバッグ機能が正常に動作しない(異なるプロジェクト参照)

Eclipse上で思うようにデバッグができずに困っています。

<環境>
Eclipse3.0.1、Tomcat5.0を使用しています。
Eclipse上にプロジェクトA、Bの2つのプロジェクトが存在します。
A、BはそれぞれCVSで同じプロジェクトから派生しています。
(AはHEADから、Bはブランチから作成したプロジェクト。)
どちらのコンテキストも、コンテナ上の起動では問題がありません。
各プロジェクトのプロパティ→情報で表示されるロケーションも、それぞれ正しいパスを表示しています。

<現象>
Bのソースで、150行目にブレイクポイントを貼ったとすると、
閉じられていたAのソースが自動的に開き、Aの150行目に移動して止まります。
その後ステップ実行しても、Aのソース上をポインタが移動しているように見えます。

しかし実際の処理はBの方が行われているようで、
(AとBで違う処理を行うようにして試したところ、Bの処理が行われた結果を確認できた)
デバッグの目に見える動作がおかしくなっているようです。

<試したケース>
プロジェクトAの名前を変更してからBでデバッグしても、
変更した名前のプロジェクトのソースを開いてそちらへ移動しているようです。
また、Aでデバッグした場合はAを実行しているように見えます。
プロジェクトAを削除した場合、ソースが見つからない等のエラーになります。

--------
Bでデバッグをできるようにしたいのですが、
原因や回避策などご存知の方、アドバイスください。よろしくお願いします。

Eclipse上で思うようにデバッグができずに困っています。

<環境>
Eclipse3.0.1、Tomcat5.0を使用しています。
Eclipse上にプロジェクトA、Bの2つのプロジェクトが存在します。
A、BはそれぞれCVSで同じプロジェクトから派生しています。
(AはHEADから、Bはブランチから作成したプロジェクト。)
どちらのコンテキストも、コンテナ上の起動では問題がありません。
各プロジェクトのプロパティ→情報で表示されるロケーションも、それぞれ正しいパスを表示しています。

<現象>
Bのソースで、150行...続きを読む

Aベストアンサー

Eclipse3.0系では標準でサーバサイドのデバッグはできないと思いますが、何かプラグインを入れておられるのでしょうか。

もし、SysdeoのTomcatプラグインを入れておられるのでしたら、
設定→Tomcat→ソース・パス
を編集してみてください。

Qeclipseのデバッグ時のステップ実行が・・。

eclipseのデバック時のステップ実行がおかしくなってしまいました。
現状としては、一応ブレイクポイントで止まってはいるのですが現在行の色がつきません。また、デバッグウィンドウの変数の中をみようとするとエラーがでてしまいます。

バージョンは3.1です。
関係ないかもしれませんが最近プラグインのJSeclipseを導入しました。

設定などわかるかたいましたらよろしくお願いします。

Aベストアンサー

別プロジェクトなどを作成していて、同じ名前のソースを見に行っているとかないですか?
それかクラスファイルが古いままとか。。
ためしにJavaファイルがビルドされているかを確認してみてはどうでしょう?

Qエクリプスで実行時、最新クラスの反映

エクリプスで開発してます。
これまで javaファイルを修正・保存後、
メニューの 実行 --> Javaアプリケーション とすると、
最新のクラスが反映されて実行できていたんですが、
この一週間くらい前から 最新クラスが反映されなくなって
しまいました。

プロジェクト管理ツールに Maven2 を使用しているのですが、
Maven2 で該当プロジェクトを実行 --> プロジェクトのクリーン
を行うと、きちんと最新クラスが反映されます。
ちなみに、ファイル管理には SVN を使用しています。

なぜ急に、実行 --> Javaアプリケーション(もしくは 実行
--> 構成及び実行)で最新クラスが実行されなくなったのか、
また、どうやったら最新クラスを実行できるようになるのか、
分かりましたら、よろしくお願いします。

Aベストアンサー

最新のクラスが反映されないのは、実行前にコンパイルがされていないからだと思います。

多分ですが、今まではmaruuuさんのEclipseの設定で「起動前にビルド」が有効になっていたのだと思います。
自分の環境(Eclipse3.1.1+言語パック)だと以下のような感じで設定可能です。

「ウィンドウ」→「設定」→「実行/デバッグ」→「起動」
で、その画面内に「起動前に(必要に応じて)ビルド」というチェックボックスがあるのでそれにチェックします。

この設定で実行時に自動で更新したファイルのみコンパイルされます。
(Eclipseのバージョンが違っても大体同じ所に設定する所があると思います。)

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Qyyyymmddからyyyy/mm/ddへの変換

いつもお世話になっております。
Aと言う変数にはyyyymmddの値が入っていて
Aをyyyy/mm/ddにしてBの変数に入れたい場合の処理がわかりません。
調べたところ、SimpleDateFormatクラスと言うものを使えばよいと言うことが判明しました。
しかし、今まで使ったことがないのでよくわかりません。
変数Aと変数BはどちらもString型です。
ご教授お願い致します。

Aベストアンサー

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.parse(a);
  formatter.applyPattern("yyyy/MM/dd");
  String b = formatter.format(date);
  System.out.println(b);
}
catch (ParseException ex) {
  System.out.println("解析失敗");
}

 こんな感じでいいんじゃないでしょうか。

 こんにちは。

 本当に変数aの中の文字列が厳密にyyyyMMddの形式のなっているのなら、普通に

String b = a.substring(0, 4) + "/" + a.substring(4, 6) + "/" + a.substring(6, 8);

 これでいいと思いますが、いったんDate型にする必要があったり、ちゃんと日付として認識できるか確かめる必要がある場合は、

String a = "20051029";

SimpleDateFormat formatter = (SimpleDateFormat)DateFormat.getDateInstance();
formatter.applyPattern("yyyyMMdd");
try {
  Date date = formatter.p...続きを読む

Q★Eclipse で、プロジェクトから別のプロジェクトを参照する方法

現在、Javaでプログラムを作成しているのですが、2つのプロジェクトを作り、BからAプロジェクトを利用している形にしてます。
Eclipse上で、BプロジェクトのJava Build Path のProjectsタブに、Aプロジェクトを指定しているのですが、
どうもAプロジェクト内のクラスが認識されず、リンクエラーになります。
Aプロジェクトをビルドしてjarを作成し、このjarをLibrariesタブに追加すると、問題なく参照解決されます。

このような症状をご存知の方、いませんでしょうか?

Aベストアンサー

以下を確認してもらってもよいですか?
Bプロジェクトの「プロパティ」の「プロジェクト参照」で、
Aプロジェクトにチェックが入っているかどうか。
私の環境は日本語化しておりますので、英語の場合は適宜読み替えて
いただけると助かります。
(ビルドパスはそのままでいいと思います)

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング