`
redsky008
  • 浏览: 351877 次
  • 性别: Icon_minigender_1
  • 来自: 成都正在项目
社区版块
存档分类
最新评论

学习动态代理的时候,原来JAVA代码中也可以编译代码执行JAVAC的功能啊

阅读更多
JDK1.6提供了如题的功能,前提是项目必须引入JDK1.6而不是JRE

		JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
		StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null, null, null);
		Iterable units = fileMgr.getJavaFileObjects("这里写的是一个.java文件的内容的字符串");
		CompilationTask t = compiler.getTask(null, fileMgr, null, null, null, units);
		t.call();
		fileMgr.close();
分享到:
评论

相关推荐

    Java动态生成代码并编译载入

    比如,当需要实现动态配置的业务规则时,可以通过这种方式将用户定义的规则转换为Java代码并加载执行。再比如,某些性能敏感的系统可能使用这种方法来即时生成和优化特定场景的代码,以达到更高的运行效率。 总的来...

    Java 动态编译源码并调用

    CGLIB则是一个代码生成库,常用于动态代理,但也可以用于编译和执行简单的Java源码。它们提供了更为简洁的API,降低了动态编译的复杂度。 在实际应用中,选择哪种方法取决于具体需求。`JavaCompiler` API是Java标准...

    JAVAC动态编译

    总结来说,Java的动态编译和代理机制为开发者提供了强大的灵活性,可以让我们在运行时生成和修改代码,实现诸如热更新、元编程等高级功能。无论是通过`JavaCompiler`进行源代码级别的动态编译,还是利用`Proxy`实现...

    通过JavaCompiler进行编译java文件(转载)

    在Java编程环境中,有时我们需要在运行时动态地编译Java源代码并生成对应的字节码文件,以便程序可以根据用户输入或其他条件动态加载和执行。Java Compiler API,即`javax.tools.JavaCompiler`,提供了这样的功能,...

    java 动态编译特性的展示工程勘误篇

    Java动态编译特性是Java平台一个非常强大的功能,它允许我们在程序运行时将源代码编译成字节码,然后直接加载到JVM中执行。这个特性极大地提升了Java的灵活性和适应性,使得我们可以实现一些在编译时无法确定的复杂...

    冠日方正JAVA反编译工具

    此外,由于Java的动态性(如反射和代理),有些功能可能无法通过反编译完全还原。 在安全和版权方面,使用反编译工具需谨慎。查看开源软件的源代码通常是合法的,但如果未经许可反编译商业软件,可能会侵犯知识产权...

    反编译java语言生成的class文件

    本文将详细介绍如何通过反编译工具将`.class`文件转换为可读的Java代码,并探讨这个过程中的相关知识点。 首先,我们要理解的是Java的编译过程。当一个Java源代码文件(`.java`)被`javac`编译器处理时,它会被转化...

    java代码.zip

    动态代理则可以在运行时生成代理类,用于实现AOP(面向切面编程)等高级功能。 10. **泛型**:自Java 5起,引入了泛型,增强了类型安全,减少了强制类型转换,使代码更易读、易维护。 11. **注解(Annotation)**...

    从Java代码到字节码(1)Java开发Java经验技巧共

    本资源“从Java代码到字节码(1)Java开发Java经验技巧共41页.pdf.zip”是一个关于Java开发的教程,旨在帮助开发者深入理解Java程序的生命周期,特别是从源代码编译成字节码的过程,这是Java平台的关键特性之一。...

    JAVA反编译

    除了反编译,还有一些其他技术可以用于分析Java代码,例如动态分析和静态分析。动态分析是在程序运行时收集信息,例如使用Java代理(Java Agent)或Java虚拟机工具接口(JVM TI)。静态分析则是在不运行程序的情况下...

    JAVA JDK1.6源代码

    通过学习和分析JDK1.6的源代码,开发者不仅可以加深对Java语言特性和设计原则的理解,还能提升解决问题的能力,编写出更健壮、高效的代码。不过,由于源码内容庞大且深入,建议按需学习,先从自己感兴趣的或工作中...

    Java字节码和asm入门资料

    ASM可以用于生成类文件,也可以用于在运行时动态地修改已存在的类,常用于AOP(面向切面编程)、动态代理、代码分析等领域。 5. **ASM使用示例**: - **生成类**:ASM可以用来创建全新的类,例如,我们可以定义类...

    Java1.6 JDK 中文

    1. **Java编译器**(javac):用于将源代码编译成可执行的字节码,使得程序能在任何支持Java的平台上运行,遵循“一次编写,到处运行”的原则。 2. **Java虚拟机(JVM)**:执行编译后的字节码,是Java平台的核心。...

    Java jdk源码

    3. **编译器(javac)**:Java源代码被`javac`编译成字节码,这个过程涉及语法分析、语义分析和代码生成。查看`com.sun.tools.javac`包下的源码,我们可以看到如何将Java源代码转换为可执行的.class文件。 4. **...

    Java_list代理服务器为TvBox支持播放列表和搜索.zip

    在提供的压缩包文件中,"alist-tvbox_master.zip"可能包含的是核心的Java代码库,用于实现播放列表(alist)和搜索功能。这个子压缩包可能包括了以下部分: 1. 源代码文件(.java):这些是用Java编写的程序代码,...

    java-1.8.0-openjdk.linux.x86_64

    例如,`java -version`可以检查Java的安装版本,`javac HelloWorld.java`可以编译名为`HelloWorld.java`的源代码,`jar cvf HelloWorld.jar HelloWorld.class`则可以创建一个包含`HelloWorld.class`的JAR文件。...

    JAVA JDK1.6 API中文帮助文档

    6. **脚本引擎支持**:JDK1.6开始支持JavaScript和其他脚本语言,通过JSR 223规范,可以在Java程序中嵌入和执行脚本代码。 7. **改进的垃圾收集器**:包括并行GC、CMS(Concurrent Mark Sweep)和G1(Garbage-First...

    Java注解学习1

    这些信息可以被编译器或运行时环境用来执行各种验证、生成代码、配置应用程序等功能。在Java中,注解是一种特殊的接口,它们的定义以`@interface`关键字开头。 注解的定义可以包含方法,这些方法在实际使用时作为...

    java实验设计包括程序设计,当学习用不错

    JUnit是一个流行的Java测试框架,可以帮助学习者编写和执行自动化测试。了解如何设置Maven或Gradle构建系统,可以自动化编译、测试和打包过程。 总的来说,这个"java实验设计"资源旨在提供一个全面的实践平台,涵盖...

    Java8/java1.8的tools.jar

    1. **编译器API**:`tools.jar`提供了对javac的访问,允许开发者在程序中调用Java编译器,进行源代码的动态编译。 2. **文档生成器API**:javadoc工具的实现,用于自动生成Java源代码的文档。 3. **JAR打包工具API...

Global site tag (gtag.js) - Google Analytics