LAPOZ-AI
About

Welcome to our Website
LAPOZ-AI

Start a conversation with AI with GPT!

久々にIntelliJ IDEAを使うことになったけど、なぜか自動buildが効かない

Blogthumbnail

2023年06月14日

ビルドしてもなぜか自動ビルドされない。。

久々にIntelliJを使う機会があったので、Springbootでwebアプリを作成してみた。。
が、なぜか保存後に自動ビルドされない。

古いバージョンで放置していたのが原因か。。?
そもそも設定がおかしいのか。。?

Chatgptで色々調べてみる。

保存するたびに自動buildさせたい。何の設定が必要?

保存するたびにアプリケーションを自動的に再起動するためには、Spring Boot DevToolsと呼ばれるツールを使うことができます。DevToolsは、クラスパスにあるファイルが変更されたときに自動的にアプリケーションを再起動する機能を提供します。

以下の依存関係をbuild.gradleファイルに追加することでDevToolsをプロジェクトに導入できます。

dependencies {
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

さらに、IntelliJ IDEAの設定で、ファイルを保存するたびに自動的にコンパイルするように設定する必要があります。以下の手順で設定できます。

File > Settings (Windows/Linux) または IntelliJ IDEA > Preferences (macOS) を開きます。
Build, Execution, Deployment > Compiler を選択します。
Build project automatically オプションをチェックします。
OK をクリックして設定を保存します。
さらに、IntelliJ IDEAには「Save files on frame deactivation」という設定もあります。これは、IDEAのウィンドウが非アクティブになったときに自動的にファイルを保存します。これを有効にするには以下の手順を行います。

File > Settings (Windows/Linux) または IntelliJ IDEA > Preferences (macOS) を開きます。
Appearance & Behavior > System Settings を選択します。
Save files on frame deactivation オプションをチェックします。
OK をクリックして設定を保存します。
これらの設定を行うと、ソースコードを編集して保存するたびにアプリケーションが自動的に再起動します。これにより、変更をすぐに反映してテストすることができます。

=========================================

とのことだけど、全部できている。。

auto-buildのタブにエラーが出ていたみたい。

Error:Auto build failure: Cannot determine path to 'tools.jar' library for 17 (/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)

なので再度Chatgptに聞いてみることに。

IntelliJのCommunityEditionを使っている。保存のたびに自動buildさせたいが下記のエラーメッセージが出力されている。
Error:Auto build failure: Cannot determine path to 'tools.jar' library for 17 (/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home)

エラーメッセージ "Cannot determine path to 'tools.jar'" は、Javaの古いバージョン(Java 8まで)に含まれていた 'tools.jar' というライブラリを探しているが見つけられないときに発生します。しかし、Java 9以降では 'tools.jar' は廃止されており、標準のライブラリに統合されています。

このエラーは、IntelliJ IDEAが古いバージョンのJavaを想定して自動ビルドを試みた結果と考えられます。あるいは、プロジェクトの一部がまだ 'tools.jar' を必要としているかもしれません。

以下の解決策を試してみてください:

IntelliJ IDEAを最新バージョンに更新する:IntelliJ IDEAの最新バージョンでは、Javaの最新バージョンもサポートしています。既に最新バージョンを使用している場合は、次のステップに進んでください。

JDKのバージョンを確認する:プロジェクトの設定で、Java 17の正しいバージョンが選択されていることを確認します。また、JAVA_HOME環境変数も適切なJDKバージョンを指していることを確認します。

プロジェクトの依存関係を確認する:プロジェクトに含まれるライブラリやフレームワークが、古いバージョンのJavaを必要としていないか確認します。特に、コメントアウトされているDoma関連の依存関係を有効にする予定がある場合は、そのバージョンがJava 17をサポートしていることを確認します。

自動ビルドの設定をオフにする:IntelliJ IDEAの設定で、保存時の自動ビルドをオフにしてみます。"Settings" > "Build, Execution, Deployment" > "Compiler" メニューにある "Build project automatically" のチェックを外します。この変更により、エラーは発生しなくなるはずですが、代わりにビルドは手動で行う必要があります。

これらの手順のいずれかが問題を解決するはずです。それでも問題が解決しない場合は、詳細なエラーメッセージやプロジェクトの設定を再度確認し、具体的な状況に基づいた対策を検討してください。

=========================================

IntelliJのバージョン自体が古すぎたのね。。と思いUpdateしてみるも解消せず(泣)
"Build project automatically" とversionの最新化だけでは足りないみたい。。
諦めず、再度聞いてみる。

"Build project automatically" だけでは保存しても即座に反映されない。なぜ?

IntelliJ IDEAでは、"Build project automatically" オプションが有効になっていても、デフォルトの状態ではファイルを保存しただけでは即座にビルドが実行されません。これは、IDEAが「アイドル状態」になってから一定時間(デフォルトでは約1秒)経過したときにのみビルドを実行するためです。

ただし、これを即座にビルドが実行されるように変更することも可能です。そのためには、次の手順を実行します。

IntelliJ IDEAのメニューから「Help」>「Find Action...」を選択します。(ショートカットはCtrl+Shift+AまたはCmd+Shift+A)
「Registry...」と入力し、選択します。
「compiler.automake.allow.when.app.running」オプションを探し、チェックボックスをオンにします。
これにより、ファイルを保存したときに即座にビルドが行われるようになります。ただし、大規模なプロジェクトの場合、ビルドの度に多大なリソースを消費する可能性があるため、この設定を有効にする際は注意が必要です。

=========================================

version up云々の前にこれを先やるべきだった。。と思いきや「compiler.automake.allow.when.app.running」がないんだが。。

compiler.automake.allow.when.app.runningが見つからない。

申し訳ありませんが、IntelliJ IDEA Community Editionでは「compiler.automake.allow.when.app.running」設定が利用できない場合があります。これはUltimate Editionの機能である可能性が高いです。

代替の方法としては、ビルドを手動で行うことが必要となります。ビルドを行うには、IntelliJのメニューから「Build」 > 「Build Project」を選択します。または、macOSの場合は「Cmd + F9」、WindowsとLinuxの場合は「Ctrl + F9」のショートカットキーを使用できます。

なお、自動ビルドを行いたい場合は、Ultimate Editionの購入を検討するか、他のIDE(EclipseやVisual Studio Codeなど)を使用することを検討してみてください。これらのIDEもJavaの開発に対応しており、自動ビルド機能も提供しています。

=========================================

いやいや、そんなこと流石にないでしょ。。。ないと言ってください。

最新の情報がChatgptには入ってないから出てこないと信じて

compiler.automake.allow.when.app.runningをGoogle先生で検索してみる。

ありました!
Preferences > Advanced Settings > Compiler

Allow auto-make to start even if developed application is currently running

上記にチェックを入れたら完了です!

 

うーん、最新の情報はChatgptには入ってないからGoogle先生との併用がよき。

 

参考:In IntelliJ 2021.2 compiler.automake.allow.when.app.running disappear. Unable to enable live reload under Spring boot