Web应用SSL连接配置报错:PATH HAS TYPE OBJECT RATHER THAN STRING
解决SBT运行Play应用时SSL密钥库路径的类型错误问题
看起来你在给Play应用配置SSL的时候碰到了路径解析的坑,这个PATH HAS TYPE OBJECT RATHER THAN STRING错误其实挺常见的,尤其是在Windows环境下用SBT运行的时候——本质是AkkaHttpServer读取https.keyStore.path参数时,没能正确识别出有效的字符串路径,导致加载SSL上下文失败。下面是几个靠谱的解决办法:
用正斜杠替换反斜杠
Windows系统完全支持正斜杠作为路径分隔符,而且不需要额外转义,能避免命令行把反斜杠当成转义字符解析出错。修改后的命令如下:run -Dhttp.port=disabled -Dhttps.port=9448 -Dhttps.keyStore.path="certs/example.com.jks" -Dhttps.keyStore.type=JKS -Dhttps.keyStore.password=changeit对反斜杠进行双重转义
如果你坚持要用反斜杠作为路径分隔符,需要在命令行里把单个\换成\\——因为SBT的命令行解析会把单个反斜杠当成转义字符,双重转义后才能被正确识别为路径里的分隔符:run -Dhttp.port=disabled -Dhttps.port=9448 -Dhttps.keyStore.path="certs\\example.com.jks" -Dhttps.keyStore.type=JKS -Dhttps.keyStore.password=changeit改用绝对路径
有时候相对路径的解析会因为当前工作目录的问题出现异常,换成完整的绝对路径能彻底避免这个问题,比如:run -Dhttp.port=disabled -Dhttps.port=9448 -Dhttps.keyStore.path="C:/your-project-path/certs/example.com.jks" -Dhttps.keyStore.type=JKS -Dhttps.keyStore.password=changeit
试完上面的方法,应该就能正常加载密钥库、启动HTTPS服务了。
内容的提问来源于stack exchange,提问作者priyam singh
相关产品推荐
相关产品推荐

