.。oO(VirtualBox丈でなく、Scalaのsbtも、WinHomeに日本語文字が有ると駄目なのか(〃; _ ;) Win8め…)
— 慘殺用ももんが☆さっちゃん♬♪♡ (@ne_sachirou) March 23, 2013
解決した。
現象
Windows 8では、User homeのdirectory名は、live.comのuser名に自動的に設定される。Win8を入れる前に注意しておけば好いが、入れて了ったものは仕方がない。
Scalaのsbt (simple build tool) を実行しようとすると、Path contains invalid character: 幸
とか言って、home directory名に不正な文字が有るとして落ちる。sbtと云うより、ivy2が落ちる樣でもある。
原因
此れを解決するには、Javaの起動時に、別のpathをuser home directoryとして指定してやれば好い。然しJavaには起動設定file等無いので、実行時に毎回指定してやる必要が有る。
java -Dfile.encoding=UTF8 -Duser.home=C:\home yourapplication.class
うざい。だいたいsbtが勝手にJavaを起動するのに、洞っから指定すればいいんだ。
解決
sbtのlauncher script (C:\Program Files (x86)\sbt\sbt.bat
) は、以下の樣にに環境變數%JAVA_OPTS%
を參照しているので、
@REM SBT launcher script @REM @REM Envioronment: @REM JAVA_HOME - location of a JDK home dir (mandatory) @REM SBT_OPTS - JVM options (optional) @REM Configuration: @REM sbtconfig.txt found in the SBT_HOME. @REM ZOMG! We need delayed expansion to build up CFG_OPTS later @setlocal enabledelayedexpansion @echo off set SBT_HOME=%~dp0 set ERROR_CODE=0 rem FIRST we load the config file of extra options. set FN=%SBT_HOME%sbtconfig.txt set CFG_OPTS= FOR /F "tokens=* eol=# usebackq delims=" %%i IN ("%FN%") DO ( set DO_NOT_REUSE_ME=%%i rem ZOMG (Part #2) WE use !! here to delay the expansion of rem CFG_OPTS, otherwise it remains "" for this loop. set CFG_OPTS=!CFG_OPTS! !DO_NOT_REUSE_ME! ) rem We use the value of the JAVACMD environment variable if defined set _JAVACMD=%JAVACMD% if "%_JAVACMD%"=="" ( if not "%JAVA_HOME%"=="" ( if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe" ) ) if "%_JAVACMD%"=="" set _JAVACMD=java rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config. set _JAVA_OPTS=%JAVA_OPTS% if "%_JAVA_OPTS%"=="" set _JAVA_OPTS=%CFG_OPTS% :run "%_JAVACMD%" %_JAVA_OPTS% %SBT_OPTS% -cp "%SBT_HOME%jansi.jar;%SBT_HOME%sbt-launch.jar;%SBT_HOME%classes" SbtJansiLaunch %* if ERRORLEVEL 1 goto error goto end :error set ERROR_CODE=1 :end @endlocal exit /B %ERROR_CODE%
此れを設定してやれば好い。
一時的に環境變數を設定するには、以下の樣にする。此所ではuser.homeをC:\home
に設定した。pathに非ASCII文字が含まれていなければ、自由に設定して好い。
set JAVA_OPTS=-Dfile.encoding=UTF8 -Duser.home=C:\home
恒久的に設定するには、コントロールパネルから行う。
cf. [sbt install failed « Записки о компьютере http://drfits.com/2012/09/21/sbt-install-failed/ ]
cf. [bear.mini : VMware 上の Java で user.home がリモートパスになってしまって残念なことになる件(とその対策) http://bearmini.net/blog/View.aspx?bid=1&aid=187 ]