@yossy0079

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

javaでコードを修正後に再度コンパイルするときって毎回classファイルを消すんですか?

解決したいこと

現在スッキリわかるJAVA入門という本の練習問題6章を解いています。エディタはVS codeを使っています。
主にパッケージとインポート、複数ファイルを用いたプログラムを書く練習をする章なのですが、一つ疑問があります。

一度コンパイルしたclassファイルに修正を加えるために、元のjavaファイルに修正を加えて再度コンパイルするときって毎回最初のclassファイルを削除して置き換えないと行けないのですか?
今はファイル数が少ないから良いですけどのちのち時間がめちゃくちゃかかりそうな気がしてまして...
既にパッケージ分けするために数回層のフォルダにclassファイルを分けて置き換えてってやっているのでそれだけでもある程度手間ですし、今後もっとファイルが増えていくと考えると修正して再コンパイルするたびにに「javac Main.java One.java Two Java....」みたいに入力するだけでもかなり手間ですしエラーも起きやすそうじゃないかと思いまして。

パッケージやインポートを使っている以上全て同時にコンパイルしないといけないので、とりあえず全部再コンパイルして修正したファイルだけ置き換える感じが普通なのでしょうか。

もしかしたら今後教科書で触れてくれるのかもしれませんが、大規模な開発をするときとかってjavaファイルに修正を加えて再コンパイルするときはどういう手段を使っているのか知りたいです。

プログラミング初心者ですのでもしかしたら的はずれな質問をしているのかもしれませんし、伝わりづらい部分もあると思いますが是非コメントしていただけると助かります...!

0 likes

2Answer

  1. javacコマンドは、すでにあるバイトコードを上書きするので、逐一古いものを削除する必要はありません。
  2. 参照しているクラスについても推移的にコンパイルされるので、個別にコンパイル対象として指定する必要もありません(少なくとも入門レベルのコードであれば)。エントリポイント(mainのあるクラス)だけで十分です。
  3. EclipseやIntelliJ IDEAなどのIDEを使えば、この辺のことを意識する機会は減ります。
  4. ある程度のプロジェクトになるとCUIのビルドツールも有用ですが、2022年の現在はMavenやGradleが一般的だと思います。
3Like

コンパイルをするにあたって,Makefileという便利なものがあります.元々はC言語周りでよく使われるツールですが,Java用に置き換えて使うこともできます.

この記事とか良いのではないでしょうか.

一度コンパイルしたclassファイルに修正を加えるために、元のjavaファイルに修正を加えて再度コンパイルするときって毎回最初のclassファイルを削除して置き換えないと行けないのですか?

削除する必要はなかったと思いますが,何か問題があったときのために,Makefileでは全てのclassファイルを削除するための設定としてmake cleanを用意しておくことが多々ありますので,ご要望に添えるものかと思います.

1Like

Your answer might help someone💌