如何在MSYS bash中运行play!框架

8

我无法在MSYS shell(Windows上Git使用的shell)中使用play!框架。

Error during sbt execution: Could not find configuration file
'c:/Dev/Prg/Play/framework/sbt/play.boot.properties'.  Searched:
        file:/C:/Users/Paul/
        file:/C:/Users/Paul/
        file:/C:/Dev/Prg/Play/framework/sbt/

有没有办法让它运行起来?


1
刚遇到了同样的问题。我猜现在只能在普通命令提示符中运行它了。 - Eve Freeman
3个回答

10

已经有人在Play邮件列表上发布了解决此问题的方案:这里有一个补丁可以解决这个问题。

diff -r --unified play-2.0-orig/framework/build play-2.0-cygwin/framework/build
--- play-2.0-orig/framework/build   2012-03-12 20:25:28.000000000 -0700
+++ play-2.0-cygwin/framework/build 2012-06-15 17:56:57.436000000 -0700
@@ -8,4 +8,4 @@
   DEBUG_PARAM="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${JPDA_PORT}"
 fi

-java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -Dfile.encoding=UTF8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"
\ No newline at end of file
+java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -Dfile.encoding=UTF8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=$BOOTPROP`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"
diff -r --unified play-2.0-orig/play play-2.0-cygwin/play
--- play-2.0-orig/play  2012-03-12 20:22:03.000000000 -0700
+++ play-2.0-cygwin/play    2012-06-15 20:48:41.624800000 -0700
@@ -1,5 +1,23 @@
 #! /usr/bin/env sh

+case `uname` in
+  CYGWIN*)
+    function dirname {
+      cygpath -m `command dirname $@`
+    }
+    typeset -fx dirname
+    export BOOTPROP="file:///"
+    ;;
+  MINGW32*)
+    function dirname { (cd `command dirname $@`; pwd -W) }
+    typeset -fx dirname
+    export BOOTPROP="file:///"
+    ;;
+  *)
+    export BOOTPROP=""
+    ;;
+esac
+
 PRG="$0"
 while [ -h "$PRG" ] ; do
     PRG=`readlink "$PRG"`
@@ -54,5 +72,5 @@
   fi

 else
-  java -Dsbt.ivy.home=$dir/repository -Dplay.home=$dir/framework -Dsbt.boot.properties=$dir/framework/sbt/play.boot.properties -jar $dir/framework/sbt/sbt-launch.jar "$@"
+  java -Dsbt.ivy.home=$dir/repository -Dplay.home=$dir/framework -Dsbt.boot.properties=$BOOTPROP$dir/framework/sbt/play.boot.properties -jar $dir/framework/sbt/sbt-launch.jar "$@"
 fi

4

这是针对play-2.1.3的解决方案

  1. 启动mingw32
  2. 切换到/play-2.1.3目录下
  3. 执行命令:patch -p1 < /path/to/play_cygwin.patch

这是补丁的副本:

diff -r --unified play-2.1.3/framework/build play-2.1.3-cygwin/framework/build
--- play-2.1.3/framework/build   2013-08-06 12:29:56 +0000
+++ play-2.1.3-cygwin/framework/build   2013-09-04 13:44:05 +0000
@@ -10,4 +10,4 @@
   DEBUG_PARAM="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${JPDA_PORT}"
 fi

-java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M ${JAVA_OPTS} -Dfile.encoding=UTF-8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"
+java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M ${JAVA_OPTS} -Dfile.encoding=UTF-8 -Dplay.version="${PLAY_VERSION}" -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` -Dsbt.boot.properties=$BOOTPROP`dirname $0`/sbt/sbt.boot.properties -jar `dirname $0`/sbt/sbt-launch.jar "$@"
diff -r --unified play-2.1.3/play play-2.1.3-cygwin/play
--- play-2.1.3/play 2013-09-04 02:44:05 +0000
+++ play-2.1.3-cygwin/play  2013-09-04 13:51:36 +0000
@@ -1,5 +1,23 @@
 #! /usr/bin/env sh

+case `uname` in
+  CYGWIN*)
+    function dirname {
+      cygpath -m `command dirname $@`
+    }
+    typeset -fx dirname
+    export BOOTPROP="file:///"
+    ;;
+  MINGW32*)
+    function dirname { (cd `command dirname $@`; pwd -W) }
+    typeset -fx dirname
+    export BOOTPROP="file:///"
+    ;;
+  *)
+    export BOOTPROP=""
+    ;;
+esac
+
 PRG="$0"
 while [ -h "$PRG" ] ; do
   PRG=`readlink "$PRG"`
@@ -61,5 +79,5 @@
   fi

 else
-  "$JAVA" -Dsbt.ivy.home=$dir/repository -Dplay.home=$dir/framework -Dsbt.boot.properties=$dir/framework/sbt/play.boot.properties -jar $dir/framework/sbt/sbt-launch.jar "$@"
+  "$JAVA" -Dsbt.ivy.home=$dir/repository -Dplay.home=$dir/framework -Dsbt.boot.properties=$BOOTPROP$dir/framework/sbt/play.boot.properties -jar $dir/framework/sbt/sbt-launch.jar "$@"
 fi

1
我遇到了相同的问题。在我的情况下,问题是由于目录名称中有空格导致的。我重命名了一个包含空格的文件夹,问题得到了解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接