1. 配置antlr4
今天做编译原理实验五要用antlr而不是我在上个实验中用的antlrworks-1.5.2(antlrworks-1.5.2也不支持文法直接左递归),于是按教程配置antlr4,但CLASSPATH与Path都按教程配置了,终端输“antlr4”却显示:错误: 找不到或无法加载主类 org.antlr.v4.Tool 原因:java.lang.ClassNotFoundEx。
一顿搜索改配置都没用,最后在一篇帖子中找到了可能的原因:【当Java的版本高于10的时候不需要配置CLASSPATH 环境变量,只需要配置JAVA_HOME和PATH即可】我的Java版本是jdk-15.0.2,因此现有的教程中的配置不适合我,而我对环境变量的配置不了解,于是只能降低java版本到适合教程。
2.java改版本
按网上教程安装1.7版本,安装完还未改配置的文件夹如下,15和1.7版本并存。
再按网上教程配置环境,共改了Classpath,JavaHome,path但都没用,版本还是15(也可能是我当时改完没关环境变量页面(后面才意识到好像要关闭才重新生效,终端也是一样)),于是再替换C/WINDOWS/SYSTEM32中的java.exe等三个文件,再改win+r输入regedit跳出的注册表编辑器中的java版本(却发现其中显示的版本已经是1.7了),还是不行,于是电脑重启。重启后还不行,再删环境path中的C:\ProgramData\Oracle\Java\javapath。最后不知道怎么就版本调好了,但是终端输入java,java -version都没问题,javac却显示: javac不是内部或外部命令…
3.处理 javac不是内部或外部命令,也不是可运行的程序这一问题
还是网上到处找帖子,不断试错,过程就不说了,最后将尝试的成功结果放在下面:
JAVA_HOME: C:\Program Files\Java\jdk1.7.0_80;
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
最关键的是PATH:%JAVA_HOME%\jre\bin;
C:\Program Files\Java\jdk1.7.0_80\bin
这里我分成了两句来写,但关键点在于…\jre\bin这句前面可以用%JAVA_HOME%,但…\bin这句前面必须用绝对路径即C:\Program Files\Java\jdk1.7.0_80,原因不知道(我是win10)而这两句在PATH的先后顺序经过实验不影响。
(不过PATH中原有的C:\ProgramData\Oracle\Java\javapath这句我在之前改版本的时候就删去了,所以也不知道这句是不是一定要删).
最后改完,javac就成功了:
于是antlr4也很顺利地按教程配置环境成功了,还写了这份“教程”。
但我的实验应该是来不及了。。。。。