[ERROR 2016-07-01 13:46:26 c.a.j.d.s.Supervisor:218 main] Fail to run supervisor
java.io.FileNotFoundException: \dev\null (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method) ~[na:1.7.0_45]
at java.io.FileOutputStream.<init>(FileOutputStream.java:221) ~[na:1.7.0_45]
at java.io.FileOutputStream.<init>(FileOutputStream.java:171) ~[na:1.7.0_45]
at com.alibaba.jstorm.utils.JStormUtils.redirectOutput(JStormUtils.java:1354) ~[jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.daemon.supervisor.Supervisor.run(Supervisor.java:203) [jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.daemon.supervisor.Supervisor.main(Supervisor.java:237) [jstorm-core-2.1.1.jar:na]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这个错误信息,表明JStorm Supervisor在尝试重定向输出流到\dev\null
时失败了,原因是系统找不到指定的路径。这通常是因为\dev\null
是一个Unix/Linux系统中的特殊文件,用于丢弃所有写入其中的数据,而在Windows系统中对应的设备文件名是NUL
(注意没有\dev\
前缀)。
解决这个问题的方法是在运行JStorm Supervisor之前,确保代码或配置能够根据操作系统正确地识别和使用相应的空设备文件。如果你正在使用的是Windows系统,需要修改相关代码或配置文件,将\dev\null
替换为NUL
。
对于基于Java的应用,如果这段逻辑不容易直接修改(比如在第三方库中),你可能需要通过环境变量或者Java系统属性的方式来灵活配置输出重定向的目标,以适应不同的操作系统环境。
具体到JStorm,虽然直接修改源码不是一个长期的解决方案,但你可以检查是否有配置项允许你自定义日志输出位置,或者是否可以通过环境设置来调整。如果JStorm支持通过配置文件设置这些参数,请查阅其官方文档来了解如何正确配置。
如果上述方法不可行,且你有权限和能力修改代码,可以考虑在启动Supervisor之前,添加逻辑判断操作系统类型,并据此选择正确的null设备文件路径。
最后,考虑到JStorm 2.1.1已经是较旧的版本,如果问题持续存在且影响生产环境,建议升级到JStorm的最新稳定版本或者考虑迁移到更现代、维护更活跃的流处理框架如Apache Storm或Apache Flink,这些框架可能已经解决了跨平台兼容性方面的问题。