Javac
fengjc71287116
这个作者很懒,什么都没留下…
展开
-
关于条件编译
被初始化为编译期常量的 static final 变量的引用,在编译时被解析为常量值的一个本地拷贝,这恰好让java能实现条件编译看例子:[code="java"]public class Example { public static void main(String[] args) { if (Debug.debug) { Sy...原创 2011-12-15 14:23:16 · 74 阅读 · 0 评论 -
javac语法分析
这年头,还有比我手欠的么?一笔一笔画出来的注释......[img]http://dl.iteye.com/upload/attachment/0062/0828/478d2834-2fd5-3058-9a33-26e10f2d74d2.bmp[/img]debug图:[img]http://dl.iteye.com/upload/attachment/0062...原创 2012-01-13 00:27:46 · 142 阅读 · 0 评论 -
com.sun.tools.javac.Launcher中使用Preferences操作Windows注册表
OpenJDK javac中com.sun.tools.javac.Launcher有以下代码,在Windows平台上使用注册表来保存上次打开的路径信息,以下是代码片段:[code="java"] Preferences prefs = Preferences.userNodeForPackage(Launcher.class); if (args.leng...原创 2012-05-20 15:17:44 · 117 阅读 · 0 评论 -
java API的动态编译接口
读javac源码时奇怪com.sun.tools.javac.main.Main中有这么个boolean apiMode实例变量,代码注释说“如果apiMode为true,那么某些错误可能导致异常”。奇怪的是从命令行启动javac并没有相关代码能设置apiMode的值,于是在源码中翻来翻去,发现原来是动态编译时会用到apiMode这个变量,于是豁然开朗,还是记录下吧,好记性不如烂笔头...原创 2012-05-23 22:53:57 · 283 阅读 · 0 评论 -
关于package-info.java
以前不知道有package-info.java这个类,读javac源码在”输出符号表“的处理中碰到了它,于是简单研究一下1.package-info.java用于描述当前包的信息2.创建它的办法 在Eclipse中创建这个类名是不被允许的,会报"Type name is notvalid"错误(java类名是不允许有中划线"-"的),可以先在Eclipse之外创建...原创 2012-06-14 23:29:28 · 251 阅读 · 0 评论 -
远程执行小工具
今天想给项目写个远程执行的小工具1.客户端动态编译要远程执行的代码2.通过网络将编译好的字节码传输到服务端3.服务端留一个类装载器的接口4.对客户端传输过来的字节码做一定修改(复杂了的不好改,修改常量池还是不难实现的,比如需要输出信息到客户端,却又想用System.out输出,修改常量池就好了,不然System.out只能输出在服务端)5.用自定义的ClassLoader...原创 2013-02-04 23:49:50 · 150 阅读 · 0 评论 -
Java 绕过编译器检查抛出“受检查的”异常
个别特殊情况下,我们可能想抛出受检查的异常但却并不想在方法上加入throws XXException的signature比如下面的代码不能成功编译:[code="java"] public static void main(String[] args){ throw new Exception(); }[/code]需要改成这样:[code="java"]...原创 2014-01-23 16:45:16 · 681 阅读 · 0 评论