2013-08-31 79 views
3

下載2.9.2階爲Windows,並運行斯卡拉我遇到了這樣的錯誤:「錯誤:找不到主類scala.tools.nsc.MainGenericRunner」在Windows中運行時階後

"錯誤: 找不到或無法加載主類 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\ 

所以故障是由於額外的s節奏在programfiles

+0

也,你有沒有使用MSI或ZIP安裝?你從哪裏提取它? ZIP文件不包含「files」子目錄,而是直接包含「bin」和其他文件。 – gourlaysama

+0

我試過MSI和ZIP,並且都沒有'file'目錄 – Flybywind

+0

感謝編輯,現在更清楚了。這可能是一個錯誤〜s(有幾個從未修復......)在cmd.exe下。您使用的是哪個版本的Windows? – gourlaysama

回答

2

那些奇怪的變量被稱爲parameter extensions。它們允許您將一個變量解釋爲文件/目錄的路徑,並直接從該路徑解析出事物。

例如,如果%1是一個文件dir123456\file.txt的路徑,

  • %~f1file.txt完全合格的路徑,
  • %~p1是路徑到含目錄dir123456
  • %~s1是短名稱格式的路徑dir123~1\file.txt,
  • 和許多其他...

此外,%0始終設置爲當前正在運行的腳本的路徑。所以:

  • %~fs0是完全合格的路徑,在短名稱格式,當前的腳本,
  • %%~dpsiFOR可變%%i的手動擴張到隨後的路徑中的驅動器號(d選項)包含文件夾(p選項),格式簡短(s選項)。

現在,這個代碼怪異塊是KB833431一種變通方法,其中%~dps0命令不給你的路徑,當前腳本的文件夾(在短格式),雖然它應該。這在XP SP2中得到了修復。

這似乎是手動重建從完全合格的路徑斯卡拉bin目錄的完全限定路徑scala.bat,然後剛開該目錄的父目錄,這應該是一個有效的_SCALA_HOME

0

我在Windows格式10

解決方法是斯卡拉沒有空間安裝到路徑的新安裝量後,斯卡拉我得到了同樣的錯誤。例如D:\scala

scala.bat使用8.3文件名來設置_SCALA_HOME,但在NTFS捲上的8.3文件名生成可以通過選項禁用(現在看起來默認)。

要檢查是否啓用了8.3文件名生成,請運行dir /x並查看是否在長名稱旁邊顯示短文件/文件夾名稱。

C:\>dir /x 
2016/04/19 08:26 <DIR>   PROGRA~1  Program Files 
D:\>dir /x 
2016/04/19 14:38 <DIR>      Program Files 

或者在管理員命令提示符(您的安裝驅動器來替換D:TechNet documentation)使用fsutil 8dot3name命令:

fsutil 8dot3name query D: 
0

如果你想創建一個環境變量,它不會讓你有目錄中的空格,您需要使用Window的縮短路徑名。

而不是「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

解決方案: enter image description here

爲了讓他掛在嘴邊的批處理文件的變化,下載記事本+

然後右鍵點擊NotePad ++並選擇「以管理員身份運行」或「以PowerBroker管理員身份運行」。

enter image description here

用記事本打開一個新的文件++

enter image description here

瀏覽到您的斯卡拉/斌/ scala.bat文件目錄,並選擇階。蝙蝠

enter image description here

更改代碼以上面的鏈接說什麼。因此,最終的結果應該是這樣的:

enter image description here

進行更改爲:對於斯卡拉/ bin文件夾內的所有.bat文件set_home:add_cpath和。

現在,打開命令提示符,然後輸入「斯卡拉-version」或只是「斯卡拉」

相關問題