ECJ 是 Eclipse Compiler for Java 的缩写,是 JavaTM 承认的 Java 编译工具(相似 javac)。能够单独下载使用。java
下载地址: http://mirrors.ustc.edu.cn/eclipse/eclipse/downloads/drops4/R-4.11-201903070500/ecj-4.11.jarapi
(使用 ustc 的 mirror,而后在 eclipse 的下载里表中找到独立的 ecj 包)eclipse
由于是 jar 包,因此,须要 jre 来执行,我写了个小脚本:工具
@echo off java -jar "C:\Program Files (x86)\Java\jre1.8.0_211\lib\ecj-4.11.jar" -7 %*
如上所示,我把它拷贝到了 java 的标准 lib 里面放着了。spa
上面脚本的意思呢就是,使用 java 执行这个包,而后把全部的参数都传进来。其中 -7 是指定编译使用的 java 版本为 java7,目前 ecj 支持 java9 及之前的全部 java 版本。code
为了能在 cmd 下直接使用,我把这个脚本命名为 ecj.cmd, 放在了: C:\Program Files (x86)\Common Files\Oracle\Javablog
至于为何不用 javac。。。java 的安装体验实在太差。。。不知道这算不算理由。。。ip
尝试编译下面的代码:cmd
public class Test{ public void method() { new testInterface() { public void info() { System.out.println("Hello"); } }.info(); } public static void main(String[] args) { Test test = new Test(); test.method(); } } interface testInterface { public void info(); }
没毛病:io
D:\Project\Java\inner>ecj Test.java D:\Project\Java\inner>java Test Hello
另一些状况,咱们的编译可能用到额外的 jar 包:
ecj -cp surrounscm-api.jar GridPaneApplication.java
用上面指令编译的 class,在执行时要这样添加 classpath:
java -cp .;lib\surroundscm-api.jar GetMiniAutosar
也就是,不知道为啥,可是须要先添加当前目录做为 classpath。