3

Windows用のscala 2.10.2をダウンロードし、scalaを実行した後、次のようなエラーに遭遇しました:

"错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner"

これは、「エラー: メイン クラス scala.tools.nsc.MainGenericRunner が見つからないか、読み込めません」という意味です。scala.batそのため、理由を確認したところ、次のような機能が見つかりました。

:set_home
  set _BIN_DIR=
  for %%i in (%~sf0) do set _BIN_DIR=%_BIN_DIR%%%~dpsi
  echo in set_home: %_BIN_DIR%
  set _SCALA_HOME=%_BIN_DIR%..
goto :eof

この関数の後、_SCALA_HOME は になりますがD:\program files\scala\files\scala\bin\..、これは明らかに間違っています。とにかく、_SCALA_HOME を正しいパスに設定した後、エラーは修正されました。ただし、この関数が実際に何をしようとしているのか、何%~sf0を意味するのか、誰でも知っていますか? %%~dpsiありがとうございました!


ありがとう@gourlaysama

私は最終的に本当の理由を見つけました.次のコードを実行すると、結果が次のようになります:

  for %%i in (%~sf0) do (
    echo "%%"i is: %%i
    echo sf0 is : %%~dpsi
    set _BIN_DIR=%_BIN_DIR%%%~dpsi
    )

出力:

"%"i is: D:\program
sf0 is : D:\
"%"i is: files\scala\bin\scala.bat
sf0 is : D:\program files\scala\bin\files\scala\bin\

そのため、誤動作はprogram files!間の余分なスペースが原因です。

4

3 に答える 3

2

これらの奇妙な変数は、パラメーター拡張機能と呼ばれます。変数をファイル/ディレクトリへのパスとして解釈し、そのパスから直接解決することができます。

たとえば、%1がファイルへのパスである場合dir123456\file.txt

  • %~f1への完全修飾パスですfile.txt
  • %~p1dir123456は格納ディレクトリへのパスです。
  • %~s1短い名前形式のパスですdir123~1\file.txt
  • と他の多くの...

また、%0常に現在実行中のスクリプトのパスに設定されます。そう:

  • %~fs0現在のスクリプトへの短い名前形式の完全修飾パスです。
  • %%~dpsiFOR変数%%iをドライブ文字 (オプション)に手動で展開し、dその後に含まれるフォルダーのパス (pオプション) を短い形式 (sオプション) で指定します。

さて、この奇妙に見えるコード ブロックはKB833431の回避策であり、現在のスクリプトのフォルダーへのパスが (短い形式で)%~dps0コマンドによって提供されるはずですが、提供されませんこれは XP SP2 で修正されました。

への完全修飾パスからscalabinディレクトリへの完全修飾パスを手動で再構築しscala.bat、そのディレクトリの親を取得するだけのようです。これは有効な_SCALA_HOME.

于 2013-08-31T13:57:53.953 に答える
1

ディレクトリにスペースを含めることができない環境変数を作成しようとしている場合は、Windows の短縮パス名を使用する必要があります。

「C:\Program Files\scala…」の代わりに、「C:\Progra~1\scala…」を使用します。

「C:\Program Files (x86)\scala…」の代わりに、「C:\Progra~2\scala…」を使用します。

それ以外は、

この男が解決策を見つけました: https://issues.scala-lang.org/browse/SI-7821

解決: ここに画像の説明を入力

彼が話している変更をバッチ ファイルに加えるには、Notepad++ をダウンロードします。

次に、NotePad++ を右クリックし、[管理者として実行] または [PowerBroker 管理者として実行] を選択します。

ここに画像の説明を入力

NotePad++ で新しいファイルを開く

ここに画像の説明を入力

scala/bin/scala.bat ファイル ディレクトリに移動し、scala.bat を選択します。

ここに画像の説明を入力

コードを上記のリンクの内容に変更します。したがって、最終結果は次のようになります。

ここに画像の説明を入力

scala/bin フォルダー内のすべての .bat ファイルの :add_cpath と :set_home を変更します。

コマンドプロンプトを開き、「scala -version」または単に「scala」と入力します

于 2016-08-08T23:06:56.400 に答える