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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2499閲覧

Javaファイル別に同じ名前のjavaファイルを置くと実行がされない

Alice_p_h

総合スコア11

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/06/09 04:36

編集2021/06/09 06:46

atcoderをJavaでやっていたですがこのone.javaを実行するとエイジングエイジングプログラミング(一番下)のやつが実行されてしまいます

javaではファイルの名前はディレクトリが違くても変えないといけないのでしょうか?
また、ファイルの分け方に関する助言などがあれば助かります。

自分が言っている実行は右上のplayボタン(三角のやつ)を押して"Run Java"のことを言ってます。
その他の方法でもできれば嬉しいです!

イメージ説明

実行環境

vscode extentionのJava Extension Packに入っていたやつを入れただけで何もしていないです。

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

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

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

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

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

m.ts10806

2021/06/09 04:44

>初心者すぎてすみません;; 要件とは関係ないので不要と思います。
K_3578

2021/06/09 05:08

VScodeは使ってないけど、パッケージが異なるならクラス名の重複自体は問題はないです。 まぁ管理しづらくなるので私は重複させませんが
guest

回答2

0

ベストアンサー

試しに一度VScodeを閉じて、再度起動し再度ATcoderフォルダのone.javaを実行してみてください。
恐らく実行できるのではないでしょうか。

対策としては、以下です。
0. VSCODE上で開いているファイルを必要に応じて保存してすべて閉じてください。
0. [ファイル]-「フォルダーを閉じる」が有効であれば実行して閉じてください。
表示されていない 若しくは反転して無効になっていれば何もしなくていいです。
※英語表記ならclose folder のような表記になっていると思います。
表記は必要に応じて推測してください。
0. [ファイル]-「ワークスペースを閉じる」が有効であれば実行して閉じてください。
同様に有効でなければ何もしなくていいです。
作業の開始 というタブだけが開いている状態になっているかと思います。

  1. [ファイル]-「フォルダをワークスペースに追加」で作業に必要なフォルダを必要な数だけ

追加してください。
その後、Playボタン(実行)を押してそれぞれ問題なく実行できることを確認してください。

以下、説明です。
正しくない説明もある可能性があるので、改めて調べて頂きたいですが、
ワークスペースとは複数のフォルダを同時に管理できる機能です。
上記の作業をすることでワークスペースに複数フォルダが登録されます。

挙動を見る限り、以下のようなイメージでフォルダが作成されそれぞれのフォルダにclassファイルが作成されています。

C:\Users\user\AppData\Roaming\略\workspaceStorage\ランダム生成パス00\Aフォルダ\bin\

C:\Users\user\AppData\Roaming\略\workspaceStorage\ランダム生成パス00\Bフォルダ\bin\

[ファイル] - [フォルダを開く]だけだと 下記のように1つのフォルダだけしか作成されません。
> (C:\Users\user\AppData\Roaming\略\workspaceStorage\ランダム生成パス01\Aフォルダ\bin\

この状態でVScodeに別フォルダのone.javaをドラッグドロップして実行しようとすると、
classファイルが上書きされないのかVScodeのエラーが表示されます。

ワークスペースや[フォルダを開く]を利用せず、ファイルを新規作成したりドラッグドロップで編集したりした場合、
下記のような1つのフォルダにclassファイルが作成されます。
> C:\Users\user\AppData\Local\Temp\ランダム生成パス\jdt_ws\jdt.ls-java-project\bin\

Alice_p_hさんの状態は恐らくこの状態です。
以前のエイジングエイジングプログラミングのone.classがあるため、AtCoder 云々のone.javaのclassが上書きされず、エイジング~のone.classファイルが実行されているのでしょう。
VScodeを再起動するとtempフォルダが新規作成されるので始めに実行したone.javaは
恐らく問題なく動作します。

ファイル名について
atcoderを利用されているとのことで、提出はMain.javaで提出しなければいけません。
私は面倒ですがABC124_A.java のようにファイルを作成テストし、毎回Atcoderの画面上に
コピペし public class ABC124_A {} のclassファイル名部分をMainに手修正しています。

投稿2021/06/09 06:14

Crimson_Tide

総合スコア509

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

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

Alice_p_h

2021/06/09 06:56

返信ありがとうございます!! 必要なファイルだけ開くと動くことを確認しました。 テンプレートはショートカットにでもしてみようと思います!! 内部の構造までわかりやすく教えてくださり、ありがとうございました。 自分も提出の時はコピペして名前をMainに変えています〜〜 これからも頑張ります。ありがとうございました!!
neonemo

2021/06/09 06:57

質問者じゃないですが、確かにworkspaceStorage配下にテンポラリ的にビルドしたリソースが入っていますね。 複数のJavaプロジェクトを開くようにVSCをフォルダを開くで開いた状態で実行(やビルド)すると、 同名同パッケージのクラスは先勝ちに作られて、2つ目以降は失敗するのを確認しました。 慣れていない方が作業する場合は、単純に単一のJavaプロジェクトフォルダのみでVSCを開くように運用するのが良さそうですね。
Alice_p_h

2021/06/09 07:01

そうっぽいですね、、、 自分はatcoderをやっている時、過去に書いたのを参考にしたくプロジェクトを複数開いてるんですけど別のソフトとかで開いてみることにします〜〜
Crimson_Tide

2021/06/09 07:22

atcoderのように単体で動くようなプログラムであれば、回答に示したようなワークスペースを利用した複数フォルダのファイル利用は問題ないと思います。 Javaプロジェクトのような本格的なものは、設定ファイルの兼ね合いなどもあり個別に利用したほうがよさそうですね。
guest

0

こんにちは。

atcoderをJavaでやっていたですがこのone.javaを実行すると

自分も初めてVSCにJava Extension Packを入れて試しましたが、
単にここが出来ていないだけかと。

確認したこと

イメージ説明

【実行】ボタンの**【Run Java】メニューは開いているソースウィンドウに対応している**様です。

…という事は、
Alice_p_hさんのおっしゃる【Java Run】を実行というのは
エイジングエイジングプログラミングのJavaソースを開いたウィンドウで実行しているのではないでしょうか。

今一度、実際に開いているソースコードを確認してみてはいかがでしょうか。

追記

ファイル名を合わせていなかったのでパッケージを分けて対応
イメージ説明

投稿2021/06/09 06:08

編集2021/06/09 06:33
neonemo

総合スコア191

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

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

Alice_p_h

2021/06/09 06:52

返信ありがとうございます。 自分のところで分けてやってみたのですが、結果は変わりませんでした。;; ですが、必要なファイルだけを開くとできるようになることを@Crimson_Tideさんに言われたとうりにやると動きました!! 教えていただきありがとうございました。
neonemo

2021/06/09 06:59

はい、お力にはなれませんでしたが解決した様で何よりです。 Crimson_Tideさんの知恵は私も役に立ちました。
Crimson_Tide

2021/06/09 07:15 編集

パッケージを分けることでtempフォルダ内にパッケージ毎にフォルダが作成され、それぞれのフォルダにclassファイルが作成されるようです。 atcooderのone.javaの一行目に package atcoder; エイジング~のone.javaの一行目に package age; を追加して、別パッケージにして実行してみてください。 私の環境では、ワークスペースを利用しなくても個別に実行可能でした。 atcoderに提出する際は、意識して取り除く必要がありますが、解決方法の1つかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問