cygwin上でもantが動かなかった理由を教えて下さい。


・経緯
windowsコマンドプロンプト上でant実行時に上記のエラーに遭遇
原因としてantコマンドではmakefileの生成などを行うスクリプトファイルをwindows上で動かせないというものでした。

そこでcygwin上で動かしてみたものの全く同様のエラーが発生


ただし、cygwin上でcvc3フォルダまで移動し、
./configure
/usr/bin/make
と実行すると動きました。




[コマンドと結果(一部抜粋)]

C:\Users\mar\Dropbox\js-symbolic-executor\js-symbolic-executor>ant

BUILD FAILED
C:\Users\mar\Dropbox\js-symbolic-executor\js-symbolic-executor\build.xml:105: Execute failed:
ava.io.IOException: Cannot run program ".\configure" (in directory "C:\Users\mar\Dropbox\js-s
bolic-executor\cvc3"): CreateProcess error=2, 指定されたファイルが見つかりません。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1051)


[ant実行対象のbuilt.xml]

<target name="configure-cvc3"
depends="check-config.status"
unless="config.status.present">
<property name="arith" value="gmp"/>
<exec dir="../cvc3" executable="./configure"> (←build.xml:105行目の実行できなかった部分です。)
<arg value="--enable-java"/>
<arg value="--enable-dynamic"/>
<arg value="--with-arith=${arith}"/>
</exec>
</target>

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/11/16 19:52:12

ベストアンサー

id:a-kuma3 No.1

回答回数4971ベストアンサー獲得回数2153

ant は、java のアプリケーションです。
cygwin の bash から ant を起動したときに、Windows の java が起動されています。

Windows の java は、exec のタスクを処理するときに、Windows の API を使います。
Windows の API は、コマンドプロンプトから起動したときと同じように、実行できるファイルをファイルの拡張子で判断します。
.exe や .cmd 、.bat のようなファイルじゃないと、起動できません。
なので、configure のように拡張子がないスクリプトは、Windows 版の java からでは、実行形式のファイルと認識されないのでしょう。

cygwin の bash では、unix と同じような判断で実行できるかどうかを判定しているので、拡張子がない configure も実行できます。

id:ruzxa

とてもよくわかりました。

解答いただき本当にありがとうございます!!!!!!!!!!!!!!!!

2014/11/16 19:52:05

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません