我正在尝试使用节点JavaScript执行命令。
var spawn = require('child_process').spawn,
cmd = spawn('java -cp C:\Java\jdk1.7.0_45\lib\dom4j.jar;C:\Java\jdk1.7.0_45\lib\geronimo-stax-api_1.0_spec-1.0.1.jar;C:\Java\jdk1.7.0_45\lib\gson-2.2.4.jar;C:\Java\jdk1.7.0_45\lib\mysql-connector-java-5.1.6.jar;C:\Java\jdk1.7.0_45\lib\ooxml-schemas-1.0.jar;C:\Java\jdk1.7.0_45\lib\poi-3.9-20121203.jar;C:\Java\jdk1.7.0_45\lib\poi-ooxml-3.9.jar;C:\Java\jdk1.7.0_45\lib\xmlbeans-2.5.0.jar;C:\Java\jdk1.7.0_45\lib\xmlbeans-xmlpublic-2.6.0.jar;C:\Java\jdk1.7.0_45\lib\excelreader.jar astral.excelreader.Main 11 33 fsdds', []);
然后它显示以下错误:
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:901:3
如果我从命令中删除这两个jar (C:\Java\jdk1.7.0_45\lib\xmlbeans-2.5.0.jar;C:\Java\jdk1.7.0_45\lib\xmlbeans-xmlpublic-2.6.0.jar;)
,那么它不会显示上述错误。但我想在那个罐子里放一些类文件。
如果我直接在Windows命令提示符下运行第一个命令(不使用节点js),那么它将执行正确。
如果我添加以下这些罐子,有人知道为什么会出现这个错误吗?
C:\Java\jdk1.7.0_45\lib\xmlbeans-2.5.0.jar;
C:\Java\jdk1.7.0_45\lib\xmlbeans-xmlpublic-2.6.0.jar;
答案 0 :(得分:2)
javascript中的字符串c:\windows\
应该是这样的:
c:\\windows\\
并产生语法:spawn(command, [args], [options])
spawn('java', ['-cp', 'c:\\java\\...'])
答案 1 :(得分:1)
你必须加倍反斜杠。而不是
'java -cp C:\Java\jdk1.7.0_45\lib\dom4j.jar;...'
写
'java -cp C:\\Java\\jdk1.7.0_45\\lib\\dom4j.jar;...'