&引用;错误:can';找不到主类scala.tools.nsc.MainGenericRunner“;在windows中运行scala时
在下载scala 2.10.2 for windows并运行scala后,我遇到以下错误:&引用;错误:can';找不到主类scala.tools.nsc.MainGenericRunner“;在windows中运行scala时,windows,scala,batch-file,Windows,Scala,Batch File,在下载scala 2.10.2 for windows并运行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
”错误: 找不到或无法加载主类 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
此函数完成后,\u SCALA\u 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\
因此,故障是由于
程序
文件
之间的额外空间造成的 这些奇怪的变量被称为。它们允许您将变量解释为文件/目录的路径,并直接从该路径解析内容
例如,如果%1
是指向文件dir123456\file.txt
的路径
是指向%~f1
的完全限定路径file.txt
是包含目录的路径%~p1
dir123456
是短名称格式的路径%~s1
dir123~1\file.txt
- 还有很多其他的
%0
始终设置为当前运行脚本的路径。因此:
是指向当前脚本的完全限定路径,采用短名称格式%~fs0
是将%%~dpsi
变量
手动扩展为驱动器号(%%i
选项),然后是包含文件夹的路径(d
选项),格式较短(p
选项)s
现在,这个看起来很奇怪的代码块是一个解决方法,
%~dps0
命令不会给出当前脚本文件夹的路径(短格式),尽管它应该这样做。这已在XP SP2中修复
它似乎在手动重建scala
bin
目录的完全限定路径,从完全限定路径重建到scala.bat
,然后只获取该目录的父目录,哪个应该是有效的\u SCALA\u HOME
在Windows 10格式化的新卷中安装SCALA后,我遇到了相同的错误
解决方法是将Scala安装到没有空格的路径上。e、 g.D:\scala
scala.bat
使用8.3文件名设置\u scala\u 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
如果您试图创建一个不允许在目录中包含空格的环境变量,则需要使用Window的缩短路径名 使用“C:\Program Files\scala…”而不是“C:\Program Files\scala…” 使用“C:\Program Files(x86)\scala…”代替“C:\Program Files(x86)\scala…” 否则, 这家伙找到了解决办法: 解决方案: 要对批处理文件进行他所说的更改,请下载记事本++ 然后右键单击NotePad++并选择“以管理员身份运行”或“以PowerBroker管理员身份运行” 在记事本中打开新文件++ 导航到scala/bin/scala.bat文件目录并选择scala.bat 将代码更改为上面链接所述的内容。因此,最终结果应该是: 对scala/bin文件夹中的所有.bat文件进行更改:add_cpath和:set_home
现在打开命令提示符并键入“scala-version”或“scala”另外,您是否使用了MSI或ZIP安装程序?你从哪里提取的?ZIP文件不包含
文件
子目录,而是直接包含bin
和其他目录。我尝试了MSI和ZIP,但两者都不存在文件
目录感谢编辑,现在更清晰了。这可能是cmd.exe下带有~s(有几个从未修复过…)的错误。你正在使用哪个版本的Windows?我也有同样的错误。我只需要把SCALA_HOME换成正确的。对我来说,这是“C:\Program Files\scala”而不是“C:\Program Files\scala\bin”@gourlaysama很抱歉回复晚了,我使用的是win7 Pro SP1space,这是程序文件的问题:|
fsutil 8dot3name query D: