执行风暴启动器出错

时间:2015-09-05 21:25:39

标签: xml java-io apache-storm

我正在尝试在本地运行风暴启动项目。我按照

的说明进行操作

https://github.com/apache/storm/tree/master/examples/storm-starter

但是当我尝试执行storm jar命令时,我得到了

ERROR StatusLogger Invalid URL C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml java.net.MalformedURLException: unknown protocol: c

我认为它与cluster.xml和worker.xml

中定义的以下部分有关
 <RollingFile name="METRICS"
                 fileName="${sys:storm.log.dir}/metrics.log"
                 filePattern="${sys:storm.log.dir}/metrics.log.%i">

显然文件名必须像

file:///C:/Users/xyzabc/apache-storm-0.10.0-beta/log4j2/cluster.xml

但是当我尝试通过设置

来做到这一点
<RollingFile name="METRICS"
                     fileName="file:///${sys:storm.log.dir}/metrics.log"
                     filePattern="file:///${sys:storm.log.dir}/metrics.log.%i">

我收到此错误

ERROR Unable to create file file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log java.io.IOException: The filename, directory name, or volume label syntax is incorrect

正如你所看到的,它以某种方式完全混淆了文件路径。

有没有办法可以在xml属性中正确呈现“file:///”?

4 个答案:

答案 0 :(得分:2)

从\ log4j2 \ worker.xml和\ log4j2 \ cluster.xml中删除所有更改。

编辑\ bin \ storm-config.cmd并修改以下指定的条目。

  

设置STORM_LOGBACK_CONFIGURATION_FILE =%STORM_LOGBACK_CONFIGURATION_DIR%\ cluster.xml

  

设置STORM_LOGBACK_CONFIGURATION_FILE = file://%STORM_LOGBACK_CONFIGURATION_DIR%\ cluster.xml

  

设置STORM_LOGBACK_CONFIGURATION_FILE =%STORM_HOME%\ log4j2 \ cluster.xml

  

设置STORM_LOGBACK_CONFIGURATION_FILE = file://%STORM_HOME%\ log4j2 \ cluster.xml

storm-config.cmd 中的logback配置条目中添加 file:// 有助于解决此问题。

答案 1 :(得分:1)

根据Microsoft命名约定,您应该只使用backslashes on the path,而是使用反斜杠和前斜杠。

file:///C:\Users\xyzabc\apache-storm-0.10.0-beta\logs/metrics.log

还有更多:

  

注意Windows API转换中的文件I / O函数&#34; /&#34;到&#34; \&#34;作为将名称转换为NT样式名称的一部分,除非使用&#34; \?\&#34;前缀详见以下部分。

     

对于文件I / O,&#34; \?\&#34;路径字符串的前缀告诉Windows API禁用所有字符串解析并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大型路径和文件名,则可以超过Windows API强制执行的MAX_PATH限制。有关正常最大路径限制的详细信息,请参阅上一节“最大路径长度限制”。

答案 2 :(得分:0)

同样的问题,兄弟 但是,在此错误之后:

Sheet2

如果你打开java进程,你会看到,一切正常:
{{3}}

答案 3 :(得分:0)

我有同样的问题,我编辑了storm-config.cmd并将协议添加到URL env vars:

if not %STORM_LOGBACK_CONFIGURATION_DIR% == nil (
    set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_LOGBACK_CONFIGURATION_DIR%\cluster.xml
) 

if not defined STORM_LOGBACK_CONFIGURATION_FILE (
  set STORM_LOGBACK_CONFIGURATION_FILE=file://%STORM_HOME%\log4j2\cluster.xml
)

我相信你会收到“无法创建文件”的问题,因为它需要一个路径,而不是一个URL。尝试还原这些更改,看看它是否有效。