首页 > 其他分享 >Scala运行报错 此时不应有 \scala\bin\..\lib\jline-2.14.6.jar。

Scala运行报错 此时不应有 \scala\bin\..\lib\jline-2.14.6.jar。

时间:2022-09-01 16:44:46浏览次数:56  
标签:bin set lib scala TOOL add cpath 报错 VAR

背景

安装的Scala 2.13.0,看报错是因为少了引号转义。
不过实际看代码发现情况有点离谱。

解决方案

把scala.bat中的:add_cpath子程序换成下面这样

:add_cpath
  if "%_TOOL_CLASSPATH%"=="" (
    call :add_cpath_set "%~1"
  ) else (
    call :add_cpath_add "%~1"
  )
  echo %_TOOL_CLASSPATH%
goto :eof

:add_cpath_set
set _TOOL_CLASSPATH=%~1
goto :eof

:add_cpath_add
set _TOOL_CLASSPATH=%_TOOL_CLASSPATH%;%~1
goto :eof

原因分析

在if语句中set语句语法不一样。

是的,当我得出这个结论的时候觉得非常震惊,怎么能有一个语言的语句放在if内外语法不一样的?

可以新建一个.bat文件测试,下面这个会报错。

echo on
set VAR_A=D:\Program Files (x86)\scala\bin\..\lib\jline-2.14.6.jar
set VAR_B=
echo CURRENT VAR_B=%VAR_B%
if "1"=="1" (
    set VAR_B=%VAR_A%
)

然后另外写一个,这个就不报错。

echo on
set VAR_A=D:\Program Files (x86)\scala\bin\..\lib\jline-2.14.6.jar
set VAR_B=
echo CURRENT VAR_B=%VAR_B%
set VAR_B=%VAR_A%

非常离谱的事情,除了一个set在if里面,一个set在if外面,两者一幕一样。

所以把这个bat改对的唯一方法就是不要让set出现在if语句里面,那么就只好新建两个子程序,分别放if的两个分支了。

标签:bin,set,lib,scala,TOOL,add,cpath,报错,VAR
From: https://www.cnblogs.com/FinnTenzor/p/16647023.html

相关文章