こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

クラス名はどうするのですか?

package ex7;

public class Sample {
public final static int VALUE = 100;
}

package ex7;

import static ex7.Sample.VALUE;

public class Main {
private final static int VALUE = 0;
public static void main(String[] args) {

System.out.println(VALUE);
}
}

上記のプログラムのクラス名は何をつければいいですか・・・?
同じくプログラム名は何と付ければいいですか・・・?

ご多忙中恐れいります・・・。

ご回答の程宜しくお願い申し上げます。



回答者
これが、素人さんには分かりにくいんですね。
mkdir ex7
で、ex7 というディレクトリを作製して、
その中に、
Sample.java

public class Sample {
public final static int VALUE = 100;
}
で、
Main.java

package ex7;

import static ex7.Sample.VALUE;

public class Main {
private final static int VALUE = 0;
public static void main(String[] args) {

System.out.println(VALUE);
}
}

で作製して、
ex7 の中から出て、
javac ex7/Sample.java
javac ex7/Main.java
でコンパイルします。



質問者
度々すいません・・・。

ファイル名は何にすればいいですか・・・?



ご回答がなかなか来ません。

投稿日時 - 2018-09-04 19:48:13

QNo.9534044

困ってます

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

>kouzou@GD348ZZD9 /work $ java ex7/Main
>0
>やっと0が出ました。
おめでとう。
今回のコードはそこまでです。

>kouzou@GD348ZZD9 /work $ java ex7/Sample
>エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。
単独で実行できないメソッドに実行命令を出したためのエラーです。
ex7/Sample.classはex7/Main.classの付属品ですから直接実行できません。
Main.classが大工さんならSample.classは鋸のようなものです。
鋸は木材を切る道具ですが大工さんが使うから役に立つもので、鋸だけでは勝手に材木のところへ行けませんし、誰かが動かしてやらないと材木を切れません。

投稿日時 - 2018-09-08 21:13:43

ANo.14

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(14)

ANo.13

>このようになりましたが、ドコか間違ってますか・・・?
殆どのOSには最初からjava(jdk)がインストールされていませんのでインストールしないとjavaのソースファイルをコンパイルできません。
「次の操作を試してください: apt install <選択したパッケージ>」はリストアップされたJava(jdk)のどれかをaptコマンドでインストールするよう促しています。
お薦めのパッケージは「default-jdk」です。
尚、管理者権限のrootでインストールを実行しますので下記のようになります。
kouzou@GD348ZZD9 ~ $ sudo apt insutall default-jdk
カレントディレクトリは何処でも同じ結果になります。

>この後、ドウすればいいですか・・・?
ユーザーIDのkouzouに戻ってカレントデレクトリーを/workに移動して/work/ex7に保存されたMain.javaをコンパイルします。
kouzou@GD348ZZD9 work $ javac ex7/Main.java
コンパイルでエラーが発生したときはエラー内容を補足してください。
Sample.javaとMain.javaのソースコードも提示してください。

投稿日時 - 2018-09-06 20:39:31

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-12 04:47:08

ANo.12

>ゼンゼンwormhole様の思っていることと違いますか・・・?

ぜんぜん違います。
というか#1の補足は何やってるんですか?
どういう行動した結果なのかは何となく想像はつきますが、何を持ってそういう行動したのかがさっぱりわかりません。

投稿日時 - 2018-09-06 19:24:40

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-12 04:46:42

ANo.11

>Sample.javaとMain.javaは
>エディターで分けるのですか・・・?

ファイルを分けて下さい。
恐らく、そちらの理解ではエディターで分ける、と言う表現になるのかもしれませんが、正確にはファイルを分けると言うことです。

投稿日時 - 2018-09-06 18:58:19

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-12 04:47:42

ANo.10

>GD348ZZD9 ex7 # javac ex7/Sample.java
>プログラム 'javac' は以下のパッケージで見つかりました:
javaがインストールされていないようです。
OSを入れ替えたときはjavaのインストールをしないとコンパイルできません。

>次の操作を試してください: apt install <選択したパッケージ>
<選択したパッケージ>をdefault-jdkに変えてコマンドを実行すればjava(jdk)がインストールされます。

下記のコマンドでjavaをインストールしてください。
GD348ZZD9 ex7 work # apt install default-jdk

もう1度冷静になって手順を辿ってください。

投稿日時 - 2018-09-06 15:54:59

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-12 04:48:11

ANo.9

回答No.5の補足は何ですか?
全く意味不明です。
以前の質問経緯からの推測ではLinux OSのrootにworkと言う作業用ディレクトリを作成してアクセス権をすべて許可(chmod 777 /work)とされているようです。
/workにサブディレクトリのex7を作成するときはsudo(管理者権限)で作業する必要はありません。
GD348ZZD9 work # mkdir ex7
    ↓ ユーザーのkouzouのままでex7を作成します。
kouzou@GD348ZZD9 work $ mkdir ex7

次のコマンドは何を考えたのですか?
---------------ここから---------------
GD348ZZD9 work # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 work # >public final static int VALUE = 100;
final: コマンドが見つかりません
GD348ZZD9 work # >}
---------------ここまで---------------
上記の代わりにテキストエディターでjavaのコードを記述して/work/ex7へSample.javaのファイル名で保存すれば良いと思います。但し、1行目に「package ex7;」を忘れずに記載してください。
Sample.javaの内容は以下のとおりです。
package ex7;
public class Sample {
public final static int VALUE = 100;
}
Main.javaも同様にテキストエディターで作成して/work/ex7へ保存してください。

>GD348ZZD9 ex7 # apt install mailagent
これは別件ですか?

投稿日時 - 2018-09-06 11:12:00

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-12 04:50:43

ANo.8

>Sample.java
>Main.java
>の2つのファイルが出来るという事ですか・・・?
2つのファイルが出来るのではなく提示のコードは2つの.javaファイルなので区別して保存しないとコンパイルできません。

>何故、ex7というディレクトリを作らないといけないのですか・・・?
下記の構文でex7と言うサブディレクトリに保存することを宣言しています。
package ex7;
ここで言う「package」は「サブディレクトリ」のことです。
同じpackageへ幾つもの.javaファイルを作成して1つのプログラムに統合したものがprojectになります。
projectにはmainメソッドが1つだけ作成できます。
今回の例ではMain.javaにmainメソッドがあり、Sample.javaにはmainメソッドがありません。
javac ex7/Main.java でコンパイルすると Sample.classとMain.classの2つがサブディレクトリのex7に作成されます。

投稿日時 - 2018-09-06 09:18:09

補足

kouzou@GD348ZZD9 / $ cd work
kouzou@GD348ZZD9 /work $ javac ex7/Sample.java
kouzou@GD348ZZD9 /work $ javac ex7/Main.java
kouzou@GD348ZZD9 /work $ java ex7/Sample
エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります
kouzou@GD348ZZD9 /work $ java ex7/Main
0

やっと0が出ました。

kouzou@GD348ZZD9 /work $ java ex7/Sample
エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります

とコメントが出てますが、ここはドウすれば改善できますか?

投稿日時 - 2018-09-08 19:47:04

お礼

GD348ZZD9 ex7 # javac ex7/Sample.java
プログラム 'javac' は以下のパッケージで見つかりました:
* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless
次の操作を試してください: apt install <選択したパッケージ>
GD348ZZD9 ex7 # javac ex/Main.java
プログラム 'javac' は以下のパッケージで見つかりました:
* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless
次の操作を試してください: apt install <選択したパッケージ>

このようになりましたが、ドコか間違ってますか・・・?
この後、ドウすればいいですか・・・?

投稿日時 - 2018-09-06 18:13:52

ANo.7

回答No.5の一部訂正です。
コンパイル時は次のようにjavacコマンドを実行します。
javac ex7/Sample.java
javac ex/Main.java
   ↓
コンパイル時は次のようにjavacコマンドを実行します。
javac ex/Main.java

Main.javaをコンパイルするとSample.javaが同時にコンパイルされました。

投稿日時 - 2018-09-05 20:53:46

補足

GD348ZZD9 ex7 # javac ex7/Sample.java
プログラム 'javac' は以下のパッケージで見つかりました:
* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless
次の操作を試してください: apt install <選択したパッケージ>
GD348ZZD9 ex7 # apt install ex7
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ ex7 が見つかりません
GD348ZZD9 ex7 # apt install package ex7
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
E: パッケージ package が見つかりません
E: パッケージ ex7 が見つかりません
GD348ZZD9 ex7 # javac ex/Main.java
プログラム 'javac' は以下のパッケージで見つかりました:
* default-jdk
* ecj
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
* openjdk-9-jdk-headless
次の操作を試してください: apt install <選択したパッケージ>


次の操作を試してください:が分かりません。

どうか、教えてください。

投稿日時 - 2018-09-06 14:23:58

お礼

48ZZD9 work # cd ex7
GD348ZZD9 ex7 # package ex7;
package: can't open config file /root/.mailagent
GD348ZZD9 ex7 #
GD348ZZD9 ex7 # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 ex7 # public final static int VALUE = 100;
public: コマンドが見つかりません
GD348ZZD9 ex7 # }
-bash: 予期しないトークン `}' 周辺に構文エラーがあります
GD348ZZD9 ex7 # package ex7;
package: can't open config file /root/.mailagent
GD348ZZD9 ex7 #
GD348ZZD9 ex7 # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 ex7 # public final static int VALUE = 100;
public: コマンドが見つかりません
GD348ZZD9 ex7 # }

と出ます。ボクが理屈を知らないからだと思います。

ドウすればいいでしょうか・・・?

投稿日時 - 2018-09-06 13:42:27

ANo.6

>プログラム名は何と付けて保管すればいいですか・・・?

プログラム名とは何を指して言ってますか?
ソースはjavaファイルに保存して下さい。

javaファイル名はメイン・クラス名と同じにして下さい。

下記のjavaファイル名は「Sample.java」にする必要があります。

>package ex7;
>public class Sample {
>public final static int VALUE = 100;
>}

下記のjavaファイル名は「Main.java」にする必要があります。

>package ex7;
>import static ex7.Sample.VALUE;
>public class Main {
>private final static int VALUE = 0;
>public static void main(String[] args) {
>System.out.println(VALUE);
>}
>}

投稿日時 - 2018-09-05 19:55:56

補足

Sample.javaとMain.javaは

エディターで分けるのですか・・・?

どうぞ、教えてください・・・。

投稿日時 - 2018-09-06 11:11:48

お礼

ご回答誠にありがとうございます。

投稿日時 - 2018-09-06 08:42:49

ANo.5

回答No.4の追加です。
package ex7; は「以下のコードはサブディレクトリのex7で実行する」と云うことを定義していますのでコンパイル時にカレントディレクトリから見て直下のサブディレクトリであるex7に保存されていなければなりません。
提示のコードは2つのclassなので以下のようにソースを区分けしてください。
Sample.java
---------------ここから---------------
package ex7;
public class Sample {
public final static int VALUE = 100;
}
---------------ここまで---------------
Main.java
---------------ここから---------------
package ex7;
import static ex7.Sample.VALUE;
public class Main {
private final static int VALUE = 0;
public static void main(String[] args) {
System.out.println(VALUE);
}
}
---------------ここまで---------------
コンパイル時は次のようにjavacコマンドを実行します。
javac ex7/Sample.java
javac ex/Main.java
エラーが起ったときはエラーメッセージを添えて補足の投稿をしてください。
エラーが無ければex7サブディレクトリにSample.classとMain.classが生成されるはずです。
動作テストは次のようにjavaコマンドを実行します。
java ex/Main
Sample.classにはmainメソッドが無いので実行できませんがMain.classを実行するにはSample.classが必要です。

投稿日時 - 2018-09-05 12:32:38

補足

kouzou@GD348ZZD9 ~ $ sudo -i
[sudo] kouzou のパスワード:
GD348ZZD9 ~ # ls
GD348ZZD9 ~ # cd ..
GD348ZZD9 / # ls
bin dev initrd.img lost+found opt run sys var
boot etc lib media proc sbin tmp vmlinuz
cdrom home lib64 mnt root srv usr work
GD348ZZD9 / # cd work
GD348ZZD9 work # mkdir ex7
GD348ZZD9 work # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 work # >public final static int VALUE = 100;
final: コマンドが見つかりません
GD348ZZD9 work # >}
GD348ZZD9 work # public class Sample{public final static int VALUE = 100,}
public: コマンドが見つかりません
GD348ZZD9 work # cd ex7
GD348ZZD9 ex7 # public class Sample{public final static int VALUE = 100,}
public: コマンドが見つかりません
GD348ZZD9 ex7 # package ex7;
プログラム 'package' はまだインストールされていません。 次のように入力することでインストールできます:
apt install mailagent
GD348ZZD9 ex7 # import static ex7.Sample.VALUE;
import: unable to grab mouse `': リソースが一時的に利用できません @ error/xwindow.c/XSelectWindow/9199.
GD348ZZD9 ex7 # public class Main {
public: コマンドが見つかりません
GD348ZZD9 ex7 # private final static int VALUE = 0;
private: コマンドが見つかりません
GD348ZZD9 ex7 # public static void main(String[] args) {
-bash: 予期しないトークン `(' 周辺に構文エラーがあります
GD348ZZD9 ex7 # System.out.println(VALUE);
-bash: 予期しないトークン `VALUE' 周辺に構文エラーがあります
GD348ZZD9 ex7 # }
-bash: 予期しないトークン `}' 周辺に構文エラーがあります
GD348ZZD9 ex7 # }apt install mailagent
コマンド '}apt' は見つかりませんでした。もしかして:
コマンド 'apt' - パッケージ 'apt' (main)
コマンド 'aapt' - パッケージ 'aapt' (universe)
}apt: コマンドが見つかりません
GD348ZZD9 ex7 # apt install mailagent
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
exim4 exim4-base exim4-config exim4-daemon-light libperl4-corelibs-perl
提案パッケージ:
eximon4 exim4-doc-html | exim4-doc-info spf-tools-perl swaks
推奨パッケージ:
mailx
以下のパッケージが新たにインストールされます:








GD348ZZD9 ex7 # package ex7;
package: can't open config file /root/.mailagent
GD348ZZD9 ex7 # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 ex7 # public final static int VALUE = 100;
public: コマンドが見つかりません
GD348ZZD9 ex7 # }package ex7;
コマンド '}package' は見つかりませんでした。もしかして:
コマンド 'package' - パッケージ 'mailagent' (universe)
}package: コマンドが見つかりません
GD348ZZD9 ex7 # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 ex7 # public final static int VALUE = 100;
public: コマンドが見つかりません
GD348ZZD9 ex7 # package ex7;
package: can't open config file /root/.mailagent
GD348ZZD9 ex7 # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 ex7 # public final static int VALUE = 100;
public: コマンドが見つかりません
GD348ZZD9 ex7 # }

投稿日時 - 2018-09-06 10:09:18

お礼

ご回答誠にありがとうございます。

Sample.java
Main.java

の2つのファイルが出来るという事ですか・・・?

何故、ex7というディレクトリを作らないといけないのですか・・・?

保存は

Sample.java
Main.java
Sample.class
Main.class

4つのファイルが出来るのですね・・・。

投稿日時 - 2018-09-06 08:19:15

ANo.4

質問の前提条件を省くと状況が分からないので的確な回答になりません。
以前からの類推ではOSがUbuntu 18.04で、テキストエディターでソースコードを編集して/WORKがカレントディレクトリで、其処へソース(.javaファイル)を保存していますよね?
コンパイル時は「端末」を起動してカレントディレクトリの/WORKからjavacコマンドでコンパイルしていたと記憶しています。
提示のソースコードでは「package ex7;」で指定しているex7がカレントディレクトリのサブディレクトリ名で、その中にソースファイルの名前を「public class Sample{」で指定しているSampleに.javaを付加したSample.javaとして保存します。
コンパイル時は
javac ex7/Sample.java
生成されたclassファイルはex7/Sample.classとなります。

提示のコードで
public class Sample {
public final static int VALUE = 100;
}
の外側にmainメソッドを記述しているのでコンパイルの検証が必要になるでしょう。

投稿日時 - 2018-09-04 22:57:39

補足

結果的に

Sample.java

Sample.class

Main.java

Main.class

で保存するのですか・・・?

投稿日時 - 2018-09-06 08:11:45

お礼

ご回答誠にありがとうございます。

OSはLinuxMint18.03なのです。

Ubuntuがインターネット不通になるので変えてみたのです。

この問題は意地でもマスターしたいと思いますので

宜しくお願い申し上げます。

投稿日時 - 2018-09-05 15:53:29

ANo.3

>ex7 の中から出て、
>javac ex7/Sample.java
>javac ex7/Main.java
>でコンパイルします。

(コンパイル時に)カレント・ディレクトリは「ex7」ディレクトリの親ディレクトリに設定して下さい。
javac ex7/Sample.java
javac ex7/Main.java
でコンパイルして下さい。

投稿日時 - 2018-09-04 21:49:52

お礼

kouzou@GD348ZZD9 ~ $ sudo -i
[sudo] kouzou のパスワード:
GD348ZZD9 ~ # ls
GD348ZZD9 ~ # cd ..
GD348ZZD9 / # ls
bin dev initrd.img lost+found opt run sys var
boot etc lib media proc sbin tmp vmlinuz
cdrom home lib64 mnt root srv usr work
GD348ZZD9 / # cd work
GD348ZZD9 work # mkdir ex7
GD348ZZD9 work # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 work # >public final static int VALUE = 100;
final: コマンドが見つかりません
GD348ZZD9 work # >}
GD348ZZD9 work # public class Sample{public final static int VALUE = 100,}
public: コマンドが見つかりません
GD348ZZD9 work # cd ex7
GD348ZZD9 ex7 # public class Sample{public final static int VALUE = 100,}
public: コマンドが見つかりません
GD348ZZD9 ex7 #

と出ました。ヤッてることが見当違いでしょうか?

どうか。教えてください・・・。

投稿日時 - 2018-09-06 09:11:16

ANo.2

>ファイル名は何にすればいいですか・・・?

javaファイル名はクラス名と同じにして下さい。

下記のjavaファイル名は「Sample.java」にする必要があります。

>package ex7;
>public class Sample {
>public final static int VALUE = 100;
>}

下記のjavaファイル名は「Main.java」にする必要があります。

>package ex7;
>import static ex7.Sample.VALUE;
>public class Main {
>private final static int VALUE = 0;
>public static void main(String[] args) {
>System.out.println(VALUE);
>}
>}

>package ex7;

ザックリと言うと「package」はディレクトリに対応します(「ex7」と言うディレクトリを作成して下さい)。
「ex7」ディレクトリに上記の「Sample.java、Main.java」を作成して下さい。

投稿日時 - 2018-09-04 21:38:37

お礼

ご回答誠にありがとうございました。

プログラム名は何と付けて保管すればいいですか・・・?

投稿日時 - 2018-09-04 22:56:27

ANo.1

>上記のプログラムのクラス名は何をつければいいですか・・・?

クラス名すでについていますけど・・・

>同じくプログラム名は何と付ければいいですか・・・?

何を質問したいのかまったくわからないんですけど・・・
あなたのいう「プログラム名」とはなんのことですか?

投稿日時 - 2018-09-04 20:12:33

補足

kouzou@GD348ZZD9 ~ $ sudo -i
[sudo] kouzou のパスワード:
GD348ZZD9 ~ # ls
GD348ZZD9 ~ # cd ..
GD348ZZD9 / # ls
bin dev initrd.img lost+found opt run sys var
boot etc lib media proc sbin tmp vmlinuz
cdrom home lib64 mnt root srv usr work
GD348ZZD9 / # cd work
GD348ZZD9 work # mkdir ex7
GD348ZZD9 work # public class Sample {
public: コマンドが見つかりません
GD348ZZD9 work # >public final static int VALUE = 100;
final: コマンドが見つかりません
GD348ZZD9 work # >}
GD348ZZD9 work # public class Sample{public final static int VALUE = 100,}
public: コマンドが見つかりません

とでました。ゼンゼンwormhole様の思っていることと違いますか・・・?

度々すいません・・・。教えてください・・・。

投稿日時 - 2018-09-06 09:05:27

お礼

ご回答誠にありがとうございました。

投稿日時 - 2018-09-04 21:34:59

あなたにオススメの質問