- 浏览: 1306925 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kay11:
...
JAVA生成简单的随机字符串(a-zA-Z0-9) -
zhangliguoaccp:
您好关于登录页面的验验证码这块怎么解决的?还有登录成功后,跳转 ...
JAVA,模拟HTTP登录 -
107x:
不错,谢谢!
<c:foreach 循环 map -
wenjin:
不知楼主是不还在想请叫一下我自己开的Tomcat下载一个文件C ...
Android 下载文件及写入SD卡 -
zyywgf:
JSTL c标签,fn标签,fmt标签
public interface JavaCompiler
extends Tool, OptionChecker
从程序中调用 Java™ 编程语言编译器的接口。
编译过程中,编译器可能生成诊断信息(例如,错误消息)。如果提供了诊断侦听器,那么诊断信息将被提供给该侦听器。如果没有提供侦听器,那么除非另行指定,否则诊断信息将被格式化为未指定的格式,并被写入到默认输出 System.err。即使提供了诊断侦听器,某些诊断信息也可能不适合 Diagnostic,并将被写入到默认输出。
编译器工具具有关联的标准文件管理器,此文件管理器是工具本地的(或内置的)。可以通过调用 getStandardFileManager 获取该标准文件管理器。
只要满足下面方法详细描述中的任意附加需求,编译器工具就必须与文件管理器一起运行。如果没有提供文件管理器,则编译器工具将使用标准文件管理器,比如 getStandardFileManager 返回的标准文件管理器。
实现此接口的实例必须符合 Java Language Specification 并遵照 Java Virtual Machine 规范生成类文件。Tool 接口中定义了这些规范的版本。 此外,支持 SourceVersion.RELEASE_6 或更高版本的此接口的实例还必须支持注释处理。
编译器依赖于两种服务:诊断侦听器和文件管理器。虽然此包中的大多数类和接口都定义了编译器(和一般工具)的 API,但最好不要在应用程序中使用接口 DiagnosticListener、JavaFileManager、FileObject 和 JavaFileObject。应该实现这些接口,用于为编译器提供自定义服务,从而定义编译器的 SPI。
此包中有很多类和接口,它们被设计用于简化 SPI 的实现,以自定义编译器行为:
StandardJavaFileManager
实现此接口的每个编译器都提供一个标准的文件管理器,以便在常规文件上进行操作。StandardJavaFileManager 接口定义了从常规文件创建文件对象的其他方法。
标准文件管理器有两个用途:
* 自定义编译器如何读写文件的基本构建块
* 在多个编译任务之间共享
重新使用文件管理器可能会减少扫描文件系统和读取 jar 文件的开销。标准文件管理器必须与多个顺序编译共同工作,尽管这样做并不能减少开销,下例是建议的编码模式:
Files[] files1 = ...; // input for first compilation task Files[] files2 = ...; // input for second compilation task JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); Iterable<? extends JavaFileObject> compilationUnits1 = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(files1)); compiler.getTask(null, fileManager, null, null, null, compilationUnits1).call(); Iterable<? extends JavaFileObject> compilationUnits2 = fileManager.getJavaFileObjects(files2); // use alternative method // reuse the same file manager to allow caching of jar files compiler.getTask(null, fileManager, null, null, null, compilationUnits2).call(); fileManager.close();
DiagnosticCollector
用于将诊断信息收集在一个列表中,例如:
Iterable<? extends JavaFileObject> compilationUnits = ...; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null); compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call(); for (Diagnostic diagnostic :diagnostics.getDiagnostics()) System.out.format("Error on line %d in %d%n", diagnostic.getLineNumber() diagnostic.getSource().toUri()); fileManager.close();
ForwardingJavaFileManager、ForwardingFileObject 和 ForwardingJavaFileObject
子类化不可用于重写标准文件管理器的行为,因为标准文件管理器是通过调用编译器上的方法创建的,而不是通过调用构造方法创建的。应该使用转发(或委托)。允许自定义行为时,这些类使得将多个调用转发到给定文件管理器或文件对象变得容易。例如,考虑如何将所有的调用记录到 JavaFileManager.flush():
final Logger logger = ...; Iterable<? extends JavaFileObject> compilationUnits = ...; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager stdFileManager = compiler.getStandardFileManager(null, null, null); JavaFileManager fileManager = new ForwardingJavaFileManager(stdFileManager) { public void flush() { logger.entering(StandardJavaFileManager.class.getName(), "flush"); super.flush(); logger.exiting(StandardJavaFileManager.class.getName(), "flush"); } }; compiler.getTask(null, fileManager, null, null, null, compilationUnits).call();
SimpleJavaFileObject
此类提供基本文件对象实现,该实现可用作创建文件对象的构建块。例如,下例显示了如何定义表示存储在字符串中的源代码的文件对象:
/** * A file object used to represent source coming from a string. */ public class JavaSourceFromString extends SimpleJavaFileObject { /** * The source code of this "file". */ final String code; /** * Constructs a new JavaSourceFromString. * @param name the name of the compilation unit represented by this file object * @param code the source code for the compilation unit represented by this file object */ JavaSourceFromString(String name, String code) { super(URI.create("string:///" + name.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE); this.code = code; } @Override public CharSequence getCharContent(boolean ignoreEncodingErrors) { return code; } }
从以下版本开始:
1.6
另请参见:
DiagnosticListener, Diagnostic, JavaFileManager
嵌套类摘要
static interface JavaCompiler.CompilationTask
表示编译任务的 future 的接口。
方法摘要
StandardJavaFileManager getStandardFileManager(DiagnosticListener<? super JavaFileObject> diagnosticListener, Locale locale, Charset charset)
为此工具获取一个标准文件管理器实现的新实例。
JavaCompiler.CompilationTask getTask(Writer out, JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable<String> options, Iterable<String> classes, Iterable<? extends JavaFileObject> compilationUnits)
使用给定组件和参数创建编译任务的 future。
发表评论
-
Spring 和JFreeChart 用出现Unable to validate using XSD
2012-08-09 17:31 1718错误显示: 信息: XML validation disab ... -
web.xml不认<taglib>解决办法:
2012-07-11 15:24 903在web.xml不认<taglib>解决办法: ... -
Portal服务器,Portlet容器,Portlet 的区别
2011-08-24 17:06 1572这里所说的Portal是指JCP-JSR168规范所描述的 ... -
AMF,RTMP,RTMPT,RTMPS(转)
2011-04-28 13:10 18791. AMF AMF(是Action Message F ... -
web.xml 中的listener,filter,servlet 加载顺序
2011-04-22 13:35 1071首先,加载顺序与它们 ... -
JDOM修改XML中指定节点的内容
2011-03-21 09:45 2151UpdateXML 写道 package com.util; ... -
SSH配置多个数据源
2011-01-18 16:35 9819SSH配置多个数据源 1. 编写hibernate的数据库配 ... -
SSH中调用存储过程
2010-12-29 08:46 5523SSH中调用带返回结果集的存储过程: public clas ... -
HibernateDaoSupport与JdbcDaoSupport总结
2010-12-28 13:56 1289Spring框架中Dao支持总结:Dao 的支持类可以有 ... -
DBCP,CP30及proxool连接池在spring+hibernate中的配置
2010-12-22 17:08 5883用spring默认的连接池性能效率不高, 如果数据库重启, 应 ... -
IP过滤DEMO
2010-11-01 15:59 1231import java.io.IOException; im ... -
FCKEditor Demo
2010-11-01 15:56 1945FCKEditor 的官方下载: http://source ... -
htmlunit带框架的简单处理测试demo
2010-07-07 14:58 3711package com.htmlunit.test; i ... -
模式在SSH中的简单举例
2010-05-17 14:37 1061闲着没事,瞎想,回想了几个简单的模式在SSH的应用。有不对的还 ... -
AspectJ入门 安装及简单使用
2010-05-15 19:20 7033一、下载安装 1. download http: ... -
org.apache.commons.lang.RandomStringUtils
2010-05-05 09:01 1960来自包:apache的commons-lang.jar包下载: ... -
spring字符集过滤器配置
2010-05-04 14:53 2587<!-- spring的字符集过滤器 --> ... -
Cannot instantiate abstract class or interface
2010-05-03 22:49 3882org.hibernate.InstantiationExce ... -
org.hibernate.hql.ast.QuerySyntaxException: ? is not mapped
2010-05-03 21:52 40692010-5-3 21:48:23 org.apache.ca ... -
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit
2010-05-03 21:32 4158MyEclipse 开发 SSH 整合时 java.la ...
相关推荐
java动态编译的几种技术介绍。JavaCompiler --JDK6 API的简介(java动态编译)
Java SE 6包括许多新的特性和改进,包括JDBC 4.0 API,Java Compiler API,Pluggable Annotation Processing API和新的XML和Web服务API等。此外,Java SE 6还包括对桌面应用程序的增强支持,如Swing,Java2D和Java ...
Defines the Java API for XML Processing (JAXP), the Streaming API for XML (StAX), the Simple API for XML (SAX), and the W3C Document Object Model (DOM) API. java.xml.bind Defines the Java ...
JDK6的新特性之一:...现在我们可以用JDK6 的Compiler API(JSR 199)去动态编译Java源文件 JDK6的新特性之五:轻量级Http Server JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,
To learn how to use the API, since documentation currently lacks, please refer to the Sample Usage section below as well as the sample programs, including two for Android (FacePreview.java and Record...
5.1.1.jar,log4j-1.2-api-2.7.jar,log4j-api-2.7.jar,log4j-core-2.7.jar,lucene-analyzers-common-6.4.1.jar,lucene-backward-codecs-6.4.1.jar,lucene-core-6.4.1.jar,lucene-grouping-6.4.1.jar,lucene-...
此代码经过重构,允许 Janino 使用完整的 OpenJDK 7 编译器即时编译和运行 Java 代码片段,而无需安装 JDK 或与已安装的 JDK 发生冲突。 许可和版权来自原始来源。 (c) 2001-2010,Arno Unkrig - BSD
app_java_compiler Android APP for editing and running Java code. You can download APK from Google Play . 1. screenshot 2. competitor analysis 3. each app details Java N-IDE support jdk 1.7 界面复杂,...
compiler from the JDK to compile JSPs, or any other Java compiler supported by Apache Ant. ============== API Stability: ============== The public interfaces for the following classes are fixed and ...
wagon-provider-api-1.0-alpha-6.jar wagon-provider-api-1.0-beta-2.jar wagon-provider-test-1.0-alpha-5.jar wagon-ssh-1.0-alpha-5.jar wagon-ssh-1.0-beta-2.jar wagon-ssh-common-1.0-beta-2.jar wagon-ssh-...
* ecj-4.4.jar (Eclipse JDT Java compiler) * el-api.jar (EL 3.0 API) * jasper.jar (Jasper 2 Compiler and Runtime) * jasper-el.jar (Jasper 2 EL implementation) * jsp-api.jar (JSP 2.3 API) * servlet-api....
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
JDK6新特性目录导航: Desktop类和SystemTray类 JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理API(Pluggable Annotation Processing API) 用Console开发控制台程序 对...
slf4j-api-1.5.8.jar和slf4j-log4j12-1.5.0.jar hibernate使用的一个日志系统 spring.jar spring核心包 spring-security-core-2.0.4.jar 和 spring-security-taglibs-2.0.4.jar 权限管理 commons-codec-1.3....
spring-hibernate-dwr做的AJAX操作CRUD实例 环境:myeclipse6.0+jdk1.6 所需lib列表,请自行加入 mysql-connector-java-3.1.7-bin.jar antlr-2.7.6rc1.jar asm-attrs.jar cglib-2.1.3.jar ...
This release contains Java API for XML Processing (JAXP) 1.4.5, supports Java Architecture for XML Binding (JAXB) 2.2.3, and supports Java API for XML Web Services (JAX-WS) 2.2.4. ...
jdk1.6 compiler API动态编译为字节码;自动管理字节码、用户无需关心具体生成的解析器源码;专为DSL打造,相对与使用其它常见工具(javacc, antlr等)做DSL解析,代码量急剧下降;上手较为容易,让用户更加关注自身...
jdk1.6新特性 1.Desktop类和SystemTray类 2.使用JAXB2来实现对象与XML之间的映射 ...6.插入式注解处理API(Pluggable Annotation Processing API) 7.用Console开发控制台程序 8.对脚本语言的支持 9.Common Annotations
<artifactId>maven-compiler-plugin <!-- <version>3.6.1</version> --> <source>1.7 <target>1.7 <encoding>UTF-8</encoding> <!-- 将源码打包成JAR包 --> ...
2.0.rc2.jar jaxen-full.jar jaxp-api.jar jdbc2_0-stdext.jar jstl.jar mail.jar mysql-connector-java-5.0.4-bin.jar sax.jar saxpath.jar standard.jar xalan.jar xercesImpl....