ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Scalaコミュの質問:CreateProcess error=87

  • mixiチェック
  • このエントリーをはてなブックマークに追加
皆さん、はじめまして
Scala歴四ヶ月の初心者です。

エラーの原因が分からず困っています。

Scalaでとあるプログラムを作成していますが、Scalaファイル数が302個になったところで(同時にコンパイルしているJavaファイル数は458個)、mavenで以下のようなエラーが出るようになってしまいました。

[INFO] wrap: java.io.IOException: Cannot run program "c:\Program Files\Java\jdk1.6.0\jre\bin\java": CreateProcess error=87, ?p?????[?

Scalaファイル数を301個にするとエラーが出なくなるので、Scalaファイル数が関係している可能性が大です。
今朝、mavenを動かした時に、以下のようなメッセージが出てきたので、maven-scala-pluginのバージョンが上がったのが影響しているかもしれません。

Downloading: http://scala-tools.org/repo-releases/org/scala-tools/maven-scala-plugin/2.8/maven-scala-plugin-2.8.pom

原因や解決方法、回避方法をご存じの方がいらっしゃたら、ご教授頂けると助かります。
よろしくお願いします。

コメント(5)

ともくん さん

mixiではお初にお目にかかります。
残念ながらわたしはScalaでは小さなプログラムしか書いてないので
まったくわかりません。

英語で本家のMLに投げてみてはどうでしょうか?
http://www.nabble.com/Scala-Programming-Language-f20934.html
わたしも何回か質問を出しましたが、けっこう親切に答えてくれますよ。
ちょっと前にscalaの本体をAntでコンパイルしようとして同じようなエラーにあったことがあります。
情報元は忘れてしまいましたが、VMのメモリを増やせと書いてあった記憶あるので、Mavenのオプションで増やしてみてはどうでしょうか?
僕の場合はそれでもダメだったのですが、もしかしたら解決できるかもしれません。
プラグインのソースを見ていないのでもしかしたら外しているかもしれませんが、プラグインがScalaのコンパイラを起動するときに長すぎる引数が指定された結果、Windowsがエラーを返しているのではと思います。下記のようなコードで簡単に再現します。(CreateProcess()はWindowsのAPI関数ですが、これは32768文字以上の引数を受け付けられません)

なので、引数として渡すソースファイルの数を制限するオプションがプラグインになければ、それはプラグインのバグです。

import java.util.Arrays;

public class test {
public static void main(String[] _) throws Exception {
char[] b = new char[128];
Arrays.fill(b, '-');
String[] args = new String[257];
Arrays.fill(args, new String(b));
args[0] = "echo";
Runtime.getRuntime().exec(args);
}
}

もぞよしさんの情報を元にAntがjavaを起動しているコマンドを確認してみましたが、40,525バイトありましたので指摘されている原因で間違いがなさそうです。

ですので、パスが短くなるような場所でコンパイルしたり複数に分けてコンパイルするなどが問題を回避できると思います。

scalaのbuild.xmlを見る限りWindowsでのコンパイルにはいろいろ問題が多そうです。

Mavenと関係なくてすみません。
みなさん、情報ありがとうございます。わーい(嬉しい顔)
mavenのモジュール分割で何とかコンパイルできるようになりました。

ちなみに作っているのは以下のものです。

http://code.google.com/p/simplemodeler/

ちゃんと動くようになったら、このコミュニティでも紹介したいと思います。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Scala 更新情報

Scalaのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。