はじめに
こんにちは、grailsで色々なものを作っているエンジニアです。
できごと
ある日、ある依存関係を追加して grailsを起動したら、こんな風にブートすらしなくなってしまいました。
load application.groovy
| Resolving Dependencies. Please wait...
CONFIGURE SUCCESSFUL
| Running application...
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootRun'.
> A problem occurred starting process 'command 'C:\Program Files\Java\jdk1.8.0_201\bin\java.exe''
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
| Error Failed to start server (Use --stacktrace to see the full trace)
--stacktraceを追加して再度起動してみると、
Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" (in directory "D:\git_repo\puredash"): CreateProcess error=206, フ ァイル名または拡張子が長すぎます。
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 5 more
Caused by: java.io.IOException: CreateProcess error=206, ファイル名または拡張子が長すぎます。
... 6 more
| Error Failed to start server
という、香ばしいエラーが。"D:\git_repo\puredash" のどこが長いんじゃ!と思いましたが、どうやら依存関係をたくさん書いているので、classpathが長すぎてコマンドラインが長くなりすぎてるのが原因のようですね。そんな時は、build.gradle にこう書き足します。
grails {
pathingJar = true
}
最初、gradle界隈で同様の事案があるようで(あたりまえか)、いろいろ書いてたらpathingJarタスクはもうあるけど?みたいなエラーが出たので、恐る恐る上記だけにしてみました。ちなみに grails-3.3.9です。それでは皆さん、またがんばりましょう。