c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Win8のホームディレクトリに日本語 (非ASCII文字) が入った為にScala sbtが起動しないのを解決する



解決した。

現象

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 ]