ECJ 是 Eclipse Compiler for Java 的缩写,是 JavaTM 认可的 Java 编译工具(类似 javac)。可以单独下载使用。

下载地址: http://mirrors.ustc.edu.cn/eclipse/eclipse/downloads/drops4/R-4.11-201903070500/ecj-4.11.jar

(使用 ustc 的 mirror,然后在 eclipse 的下载里表中找到独立的 ecj 包)

因为是 jar 包,所以,需要 jre 来执行,我写了个小脚本:

@echo off
java -jar "C:\Program Files (x86)\Java\jre1.8.0_211\lib\ecj-4.11.jar" -7 %*

如上所示,我把它拷贝到了 java 的标准 lib 里面放着了。

上面脚本的意思呢就是,使用 java 执行这个包,然后把所有的参数都传进来。其中 -7 是指定编译使用的 java 版本为 java7,目前 ecj 支持 java9 及以前的所有 java 版本。

为了能在 cmd 下直接使用,我把这个脚本命名为 ecj.cmd, 放在了: C:\Program Files (x86)\Common Files\Oracle\Java

PS:用同样的方法来使用 openJDK 包里的 javac, 用起来也方便的

至于为什么不用 javac。。。java 的安装体验实在太差。。。不知道这算不算理由。。。

尝试编译下面的代码:

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();
}

没毛病:

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。

独立使用 ecj的更多相关文章

  1. ☕【Java技术指南】「编译器专题」深入分析探究“静态编译器”(JAVA\IDEA\ECJ编译器)是否可以实现代码优化?

    技术分析 大家都知道Eclipse已经实现了自己的编译器,命名为 Eclipse编译器for Java (ECJ). ECJ 是 Eclipse Compiler for Java 的缩写,是 Jav ...

  2. 独立开发 一个社交 APP 的架构分享 (已实现)

    (本博客为原创:http://www.cnblogs.com/linguanh/)   My BananaCloud Android Application 前言:  这算是我的第一个 完完全全 由自 ...

  3. Dynamics CRM 之ADFS 使用 WID 的独立联合服务器

    ADFS 的使用 WID 的独立联合服务器适用于自己的测试环境,常用的就是在虚机中使用. 拓扑图如下: wID:联合身份验证服务配置为使用 Windows 内部数据库

  4. Centos6.x 下安装Jexus独立版

    操作步骤: #cd /tmp #wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz 注:如果有新版本,则修改为相应版本号即可. #tar -zxvf jexus ...

  5. activiti工作流的web流程设计器整合视频教程 SSM和独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  6. activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署

    本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...

  7. 看完你也能独立负责项目!产品经理做APP从头到尾的所有工作流程详解!

    (一)项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以为 ...

  8. linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解?

    问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那 ...

  9. centos系统编译安装nginx+php环境另加独立mysql教程

    以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...

随机推荐

  1. kubernetes学习控制器之StatefulSet控制器

    StatefulSet介绍 一.StatefulSet概述 StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Depl ...

  2. 在dockers中调试dump的dotnet程序

    其他调试参考文章 centos7使用lldb调试netcore应用转储dump文件 centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试) 生成dump文件 如何在 ...

  3. 一些你所不知道的VS Code插件

    摘要: 你所不知道的系列. 原文:提高 JavaScript 开发效率的高级 VSCode 扩展之二! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 作为一名业余爱好者.专业人员,甚 ...

  4. iOS 上传appstore 一直卡在正在通过 App Store 进行鉴定(转)

    原帖地址:https://www.jianshu.com/p/d28714f3ef74 手动操作一下执行xcode包里面的命令行操作: (1)找到前往>应用程序里面的xcode (2)显示包内容 ...

  5. sqlldr导入数据取消回显记录条数

    之前在脚本中使用sqlldr导入数据时,如果表的数据量较大的话,会使日志文件变得极大,之后在网上查找了很久,才在一个偶然的机会找到这个参数 silent=all 但是最近发现这样写有个问题,就是加了这 ...

  6. mysql--日志文件

    1 选择常规查询日志和慢查询日志输出目标 1.1  log_output查看.定义 所谓的输出目标就是日志写入到哪里,mysql中用系统变量 log_output来指定输出目标,log_output的 ...

  7. 关于paths.get()方法的参数的使用

    背景:项目中使用了一个第三方的jar包,里面用到了paths.get("xxx"),xxx表示的是配置文件,提供给用户自己制定的 问题就是这个xxx文件应该放到项目的什么地方去,测 ...

  8. javascript之DOM(三Element类型)

    Element类型用于表现XML和HTML的元素,提供了对元素标签名.子节点及特性的访问. 要访问标签名可以使用nodeName和tagName属性,其返回值是一样的. <p id=" ...

  9. centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问

    acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E github:https://github.com/Neil ...

  10. linux的性能调优

    单机调优: 分析性能瓶颈的原因,解决它.   cpu子系统 内存子系统 IO子系统 网络系统       @cpu子系统调优 cpu技术指标 xeon E5520 2.27GHz 8192kb # c ...