antlr4-инструмент не работает в Win10 с: Ошибка: Команда не выполнена: какой Java - PullRequest
0 голосов
/ 21 марта 2019

Работая в Win10, пытаясь создать парсер в Node.JS, я установил инструмент ANTLR4:

npm install --save-dev antlr4-tool

Ran:

c:/prj/parser/node_modules/.bin/antlr4-tool.cmd -o parser grammar/Lang.g4

Но получил:

Compiling grammar/Lang.g4...
'which' is not recognized as an internal or external command,
operable program or batch file.
child_process.js:677
    throw err;
    ^

Error: Command failed: which java
'which' is not recognized as an internal or external command,
operable program or batch file.

    at checkExecSyncError (child_process.js:637:11)
    at Object.execSync (child_process.js:674:13)
    at c:\prj\parser\node_modules\antlr4-tool\dist\antlr-core\antlr-compiler.js:98:19
    at chdir (c:\prj\parser\node_modules\chdir\index.js:6:13)
    at AntlrCompiler.compileJavaScript (c:\prj\parser\node_modules\antlr4-tool\dist\antlr-core\antlr-compiler.js:97:9)
    at AntlrCompiler.compileTypeScript (c:\prj\parser\node_modules\antlr4-tool\dist\antlr-core\antlr-compiler.js:62:38)
    at c:\prj\parser\node_modules\antlr4-tool\dist\antlr-core\index.js:40:78
    at c:\prj\parser\node_modules\antlr4-tool\dist\antlr-core\index.js:17:23
    at arrayEach (c:\prj\parser\node_modules\lodash\lodash.js:516:11)
    at Function.forEach (c:\prj\parser\node_modules\lodash\lodash.js:9344:14)

У меня установлена ​​Java, и я вижу ее местоположение при запуске:

where java

Но поскольку я в Windows, я не понимаю, почему команда which, а не where ...

1 Ответ

0 голосов
/ 21 марта 2019

Для кого бы то ни было, это ошибка, возникающая из-за разницы между Linux и Windows (команда which в Linux where в Windows).

Для W / A, только если вы работаете в Windows , измените файл:

.../node_modules/antlr4-tool/dist/antlr-core/antlr-compiler.js, строка № 98, с:

child.execSync('which java');

на:

child.execSync('where java');

См. https://github.com/mcchatman8009/antlr4-tool/issues/21

...