JDK6新特性之Compiler

JavaCompiler --JDK6 API的简介(java动态编译) java动态编译的几种技术介绍。JavaCompiler --JDK6 API的简介(java动态编译) 立即下载
浏览了 JDK6 的新特性 , 感觉 Compiler API 的应用有很大空间 , 它提供对代码的编译功能也就意味着在运行时可以实现代码编辑 , 编译及加载运行 . 可以在系统运行中动态配置和扩展用户自定义的功能 , 甚至可以把 Java 语句作为脚本内嵌到原有系统中扩充功能集 .
 
下面是我参阅 Jdk6 API Document 测试 Compiler 的例子 . 开发环境 :Window XP+JDK1.6+Eclipse3.2
  • Step1: 创建一个 Java 项目 Test
一定要确认 JRE 的配置 , 进入 Configure JREs... 如下图:
   
       如果 JDK 不是来源于 JDK 下的 Jre 会引发 ToolProvider 获取不到 compiler. 在缺省状态, Eclipse 会搜索到 Jre1.6..0 安装目录下的 Jre. 此目录下不包含 Compiler 工具 Javac, 需要下载安装 JDK1.6.
        
  •  Step2:准备好待编译文件Hello.java和测试代码Compiler.java.

创建目录C:/Java/SWT/src/com/gotop/study,编写Hello.java,代码没有限制,可自行编写一个:

//Hello.java
package com.gotop.study;   
import java.util.Date;   
public class Hello   
{   
    public String getHelloWorld()  
    {  
        return "现在的时间为:"+new Date();   
    }  
}
//Compiler.java
package com.gotop.study.swt;
 
import java.io.File;
 
import javax.tools.JavaCompiler;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
 
public class Compiler {
    public static void main(String args[]) {
       try {
           JavaCompiler jc = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager sjfm = jc.getStandardFileManager( null , null , null );
      
File javaFile = new File( "c:/java/swt/src/com/gotop/study/Hello.java" );
 
           Iterable fileObjects = sjfm.getJavaFileObjects(javaFile);
           jc.getTask( null , sjfm, null , null , null , fileObjects).call();
//        Add more compilation tasks
           sjfm.close();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }
}
运行即可,在目录C:/Java/SWT/src/com/gotop/study/下你发现:Hello.class表示Compiler run OK.
如果出现以下异常:
java.lang.NullPointerException
    at com.gotop.study.swt.Compiler.main( Compiler.java:14 )
说明你的 JRE 设置有问题 .
 
关于Compiler的使用,如设置编译参数等可以参考以下Link,有比较详尽的描述:
http://java.sun.com/javase/6/docs/api/javax/tools/ToolProvider.html
【codex教程】Codex 注册和使用教程(2026最新版) Codex 是 OpenAI 推出的 AI 编程助手,可以帮助开发者阅读代码、修改代码、运行命令、生成测试、排查 bug、做代码审查,也可以在终端、IDE、Codex App 或网页端使用。根据 OpenAI 帮助中心,截至 2026 年 6 月,Codex 已包含在 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 等 ChatGPT 方案中,但不同套餐的使用额度会有所不同。适合开发者在终端中使用。如果你想在命令行里使用 Codex,可以安装 Codex CLI。 阅读详情

相关推荐

ADRV9026初始化避坑指南:手把手调试PostMcsInit常见故障

本文详细解析了ADRV9026多片同步初始化过程中的PostMcsInit常见故障,包括时钟校准失败、JESD链路建立问题和ARM核通信异常等。通过实际项目经验,提供了硬件检查清单、软件配置要点和分层诊断方法,帮助工程师快速定位和解决问题,提升系统稳定性。

hadoop5ranger的博客 620

JDK 源码:Compiler

类提供了与 Java 编译器的交互,允许在运行时动态编译 Java 代码。以下是 JDK 8 中。类提供了一些静态方法,可以用于编译 Java 源代码。然而,在实际使用中,通常不会直接使用。类的方法大多数是为了与早期版本的 Java 兼容性而保留的,并不常用。包中的工具类来执行编译操作。

qq_33240556的博客 455

Protege新手必看:从安装到建模的完整指南(附推理功能详解)

本文为Protege新手提供从安装、配置到核心建模的完整实战指南。详细讲解了Java环境准备、本体项目创建、类与属性定义、个体填充等关键步骤,并重点解析了推理功能的配置与使用,帮助读者快速构建可逻辑推理的知识图谱,避开常见陷阱。

numpy6sculptor的博客 797

JdkCompiler 通过code动态编译

本篇主要是为了mark代码。在试验某个功能的时候,需要用到 写道 把对应的源代码编译成class对象,并load进系统  的功能。然后想到在dubbo中有类似的代码,然后进行无耻的copy。对应的代码如下   package com.taobao.ju.hsfer.util; import java.io.ByteArrayInputStream; import java.io...

chenjingbo009的专栏 613

光电转换器件PMT,APD总结

PMT和APD都属于单点探测器,只能探测光子信息,可以通过扫描方式测光谱。 1. PMT PMT:光电倍增管,是光子技术器件中的一个重要产品,它是一种具有极高灵敏度和超快时间响应的光探测器件。 原理:光电倍增管是一种真空器件。它由光电发射阴极(光阴极)和聚焦电极、电子倍增极及电子收集极(阳极)等组成。当光照射到光阴极时,光阴极向真空中激发出光电子。这些光电子按聚焦极电场进入倍增系统,并通过进一步的二次发射得到的倍增放大。然后把放大后的电子用阳极收集作为信号输出。 优点:因为采用了二次发射倍增系统,.

Ammon_Zhang的博客 1万+

Cursor集成Claude 4.6免费版:本地IDE合规调用指南

大语言模型编程助手(LLM Copilot)已成为现代开发标配,其核心能力依赖于上下文理解、代码推理与结构化输出等关键技术原理。Anthropic官方提供的Claude系列模型,尤其Claude 4.6,凭借200K超长上下文、tool use函数调用和严格可控的API设计,在工程实践中展现出显著技术价值。该能力可无缝嵌入本地IDE环境,支撑代码解释、跨文件分析、单元测试生成等高频开发场景。本文聚焦Cursor这一开源可审计IDE,详解如何合规复用Anthropic免费tier接口(/v1/messages

weixin_34095889的博客 537

JDK源码(17)-Compiler

一、概述 Compiler这个类被用于支持Java到本地代码编译器和相关服务。在设计上,这个类啥也不做,他充当JIT编译器实现的占位符。 放JVM虚拟机首次启动时,他确定系统属性java.compiler是否存在(系统属性可以通过System类的getProperty(String)和getProperty(String,String)方法获取)。如果存在,就被认定为是库的名称(跟平台依赖相关...

十步杀一人-千里不留行 3237

系统回溯信息:遇到严重错误。已将回溯写入...PTC... raceback.log请将其发送给|技术支持|。

一、问题分析 这种问题一旦遇上了,如果忘了保存,直接心态爆炸。 该问题一般是显卡驱动的问题。ProE/Creo对显卡的基本要求是:支持Open_GL的3D显卡,分辨率为1024×768像素以上,推荐使用64位独立显卡,显存512MB以上。如若显卡性能太低,打开软件后易自动退出。 二、解决方法 <1>有一个非常简单的方法是:在config.pro文件中,改变图形配置graphics为” win32_gdi”而不是默认的“...

幕光倾城的博客 2万+

module jdk.compiler does not “opens com.sun.tools.javac.processing“ to unnamed module 解决办法

使用idea 编译新项目时,报错:module jdk.compiler does not “opens com.sun.tools.javac.processing” to unnamed module,这是jdk项目版本跟maven编译版本不一致导致。

streamflysky的博客 9792

java零基础从入门到精通(全)

目录前言1. 入门知识1.1 java体系1.2 JDK/JRE/JVM区别1.3 编译与运行理解1.4 类体函数细节2. 标识符 前言 java优势 健壮性(JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)) 多线程并发 可移植性/跨平台 1. 入门知识 1.1 java体系 JavaSE:标准版 JavaEE:企业版 JavaME:微型版 1.2 JDK/JRE/JVM区别 JVM是不能独立安装的。 JRE和JDK都是可以独立安装的 层层嵌套,jvm包括jdk,jdk包括jre

码农研究僧的博客 6万+

【第1章>第8节】FNN模糊神经网络的理论学习与MATLAB仿真

模糊神经网络(FNN,Fuzzy Neural Network)是将模糊逻辑与神经网络相结合的一种智能算法,它融合了模糊逻辑善于处理不确定性和神经网络的自学习、自适应能力。

FPGA/MATLAB学习教程/源码/项目合作开发 389

Lombok对与Java-16不兼容的jdk.compiler‘s内部包的访问

只需将我的一个项目从Java8升级到17(使用这里的最新版本)。在编译使用lombok的项目时,例如: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> maven编译器报告如下异常: [ERROR] Failed to execute goal org.apache.m

songkai558919的博客 2763

127. 答网友疑问:ABAP Function Module 如何支持内表结构不确定的动态输入参数

ABAP RTTI 的全称是 Runtime Type Identification. 使用 RTTI,ABAP 开发人员可以在运行时获取关于数据对象的各种信息,包括其数据类型、字段列表(如果数据是Structure 或者内表的话)以及这些字段的技术属性,比如字段名称,字段数据类型,长度等等。对于这些字段信息,ABAP 提供了一组特殊的类和接口,包括 CL_ABAP_TYPEDESCR、CL_ABAP_STRUCTDESCR、CL_ABAP_TABLEDESCR 等等。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1763

JDK6的新特性之四:使用Compiler API

JDK6的新特性之四:使用Compiler API 现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Serve

Stone的专栏 1624

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JDK6新特性之二 使用Compiler API

现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用,比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Server才可以看到效果的,这时候我们就可以用Compiler

Janty_wei的专栏 1038

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

转帖:JDK6的新特性之四:使用Compiler API

JDK6的新特性之四:使用Compiler API  现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动态编译的应用程序相当有用, 比如JSP Web Server,当我们手动修改JSP后,是不希望需要重启Web Serv...

笔吏金刀的专栏 156

JDK6.0的新特性:使用Compiler API

现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某些需要用到动...

cuanwanlan1243的博客 120

JDK6.0的新特性之四:使用Compiler API

现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件,Compiler API结合反射功能就可以实现动态的产生Java代码并编译执行这些代码,有点动态语言的特征。这个特性对于某...

cmuc21661的博客 123

JDK6的新特性

JDK6的新特性之一:Desktop类和SystemTray类 在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱 发邮件,用默认应用程序打开或编辑文件(比如,用记事本打开以txt为后缀名的文件),用系统默认的打印机打印文档;后者可以用来在系统托盘区创建一个托 盘程序.下面代码演示了Des

zsw2zkl的专栏 737

JDK1.6新特性

总结一下JDK1.6,说是总结,其实也就是把别人总结的东西再复述一遍,当做自己的东西,留以学习备忘。 新特性: Desktop类和SystemTray类 Compiler API Console开发控制台程序 脚本语言的支持 GUI(程序启动画面,JTable的排序、高亮显示和过滤) ...

QQ40153258的博客 384

JAVA6新特性介绍

1. 使用JAXB来实现对象与XML之间的映射 JAXB是JavaArchitecture for XML Binding的缩写,可以将一个Java对象转变成为XML格式,反之亦然。我们把对象与关系数据库之间的映射称为ORM, 其实也可以把对象与XML之间的映射称为OXM(Ob

xiaoniba1024的专栏 649

jdk 1.6 & 1.7新特性

jdk1.6新特性 1.Desktop类和SystemTray类 2.使用JAXB2来实现对象与XML之间的映射 3.StAX 4.使用Compiler API 5.轻量级Http Server API 6.插入式注解处理API(Pluggable Annotation Processing API) 7.用Console开发控制台程序 8.对脚本语言的支持 9.Common Annot...

weixin_30752699的博客 85
上一篇: Comet: Low Latency Data for the Browser
chenm
博客等级 码龄25年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值