【已解决】antrlworks调试出错:Compiler exception: java.io.IOException Cannot run program "\javac": CreateProcess error=2 The system cannot find the file specified

【问题】

用antlrworks 1.5rc2,去调试antlr v3的代码,结果出错:

java.io.IOException Cannot run program javac CreateProcess error=2 The system cannot find the file specified

后来也就接着出现,无法打开对应的DebuggerTab。

 

其中,关于无法打开对应的DebuggerTab,之前就遇到了:

【已解决】ANTLRWorks调试出错:Cannot launch the debuggerTab. Time-out waiting to connect to the remote parser

 

【解决过程】

1.换了别的antlrworks 1.x的版本,比如:

antlrworks-1.4.3.jar

antlrworks-1.2.2.jar

错误依旧。

2.确认了,当前环境变量,都是正确的:

  • JAVA_HOME是正确的:
    • C:\Program Files\Java\jdk1.7.0_11
  • PATH中包含java的bin目录:
    • %JAVA_HOME%\bin;
  • CLASSPATH = .;%JAVA_HOME%\jre\lib\rt.jar;D:\DevTool\DD_Parser\Parser\ANTLR\antlr\antlr-4.0-complete.jar;

但是,结果还是错误依旧。

3.注意到,当前的antlrworks->Help->About->Information中,检测出来的Java,却是:

jdk_1.6.0_31,

而不是上面,环境变量中,设置的jdk1.7.0_11

所以,觉得有些诡异。

4.另外,针对antlrworks->File>Preferences->Compiler中

设置Javac为手动添加的Path=C:\Program Files\Java\jdk1.7.0_11\bin

classpath也手动加上custom为

.;%JAVA_HOME%\jre\lib\rt.jar;

.;%JAVA_HOME%\jre\lib\rt.jar;D:\DevTool\DD_Parser\Parser\ANTLR\antlr\antlr-4.0-complete.jar;

均是无效,错误依旧。

5.后来,经过很多测试,发现,把

antlrworks->File>Preferences->Compiler->javac->Path

设置为,antlrworks所检测到那个java6所对应的bin路径:

C:\Program Files (x86)\Java\jdk1.6.0_31\bin

就可以解决此问题了。

所以,推导出根本原因:

 

【总结】

由于系统当前安装了多个java:

有3个版本的jdk(x86版的java1.6.0_31,x64版的java1.7.0_11等等),加上3个版本的jre

导致,antlrworks检测出的java是

java1.6.0_31

而不是环境变量所设置的

java1.7.0_11

导致,无法正常找到javac并运行。

解决办法:

手动设置

antlrworks->File>Preferences->Compiler->javac->Path

为,antlrworks所检测到的那个java的bin路径,即可。

此处为:

C:\Program Files (x86)\Java\jdk1.6.0_31\bin

 

更加建议:

删除系统中,多余的,其他的版本的java,只包括一个必须要用的,

比如此处的x64的1.7.0_11版本的jdk(其包含了jre),其他的版本都删除了。

以避免多种java(jdk和jre)混合,导致类似此处的某个工具(antlrworks)检测出的java版本和你环境变量中的java的版本不一致,而出现各种奇怪的问题。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量