2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows 環境で Java 実行時に CreateProcess error=206 が出てこけるのを解決する

Last updated at Posted at 2017-10-03

Java で開発している最中に以下のようなエラーが発生し始めて、結構ハマったのでメモ。

Exception occurred executing command line. 
Cannot run program "C:\Program Files\Java\jre1.8.0_144\bin\javaw.exe" (in directory "C:\Users\ore\myproject"): CreateProcess error=206, The filename or extension is too long

原因

最初見たときはまったく意味が分からなかったが、java コマンド実行時に指定されている classpath の指定の文字列( java -cp "c:\myproject\main;c:\Users\.gradle...."みたなやつ)が長すぎて、Windows の createProcess の引数の上限文字数である 32768 を超えてしまったことが原因のようだ。

対処

ライブラリを減らす

これが選択できるならこれが一番いい。今回は全部必要なライブラリだったので無理だった。

プロジェクトのディレクトリを階層の低いところに移動する

例えば今が c:\Users/ore/nanika/nantoka/are/sore/koko においてあるなら、c:\Users/ore/ に移動するとか。
これが次にお手軽かなと思ってやってみたが、だめだった。理由は次の項目で。

Gradle のホームディレクトリを変更する

エラー発生時の java コマンドに指定されている classpath をよく見ると c:\Users\ore\.gradle\nantoka_library\nantoka.jar みたいなのが非常に多かった。そこで gradle のデフォルトのダウンロード先を c:\Users\ore\.gradle から c:\.gradle に移してみた。

Windows では 「システム」->「システム詳細設定」->「環境変数」-> ユーザー環境変数のところに GRADLE_USER_HOME を作って値を C:\.gradle という手順で指定する。

これで IDE を再起動しいてビルドしなおしたら上手くいった。あまりいい方法ではないけど、ハマっている方は試す価値はあるかもしれない。

そもそもちゃんとした対処はないの?

java コマンドにあまりに長すぎる引数を設定しているのが問題なので、これをやめればよい。
Java 9 の module が使えれば、こんなに大量で長い classpath を指定する必要がなくなるので解決する。ただ Java 9 が普及してかつライブラリが対応するまでには結構時間がかかりそう。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?