`
xiang37
  • 浏览: 429542 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java6新特性之动态生成Class,并加载

 
阅读更多

利用JavaCompiler对文件进行动态编译,JDK1.6新增特性

 

package com.xiva.test;

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.ToolProvider;

import com.xiva.domain.JavaStringObject;

public class IvDynamicClass
{
    
    public static JavaFileObject getFileObject()
    {
        JavaFileObject fileObj = new JavaStringObject(null, null);
        return fileObj;
    }
    
    @SuppressWarnings("unchecked")
    public static void testFileDynamicCompile()  throws Exception
    {
        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        int result = compiler.run(null, null, null, "E:\\data\\com\\xiva\\test\\ConsoleDemo.java");
        System.out.println(result);
        
        URL[] urls = new URL[]{new URL("file:E:/data/")};
        URLClassLoader loader = new URLClassLoader(urls);
        Class clazz = loader.loadClass("com.xiva.test.ConsoleDemo");
        Method method = clazz.getMethod("main", String[].class);
        Object [] argsMain = {null};
        method.invoke(clazz.newInstance(), argsMain);
    }
    
    public static void main(String[] args) throws Exception
    {
        testFileDynamicCompile();
    }
}

 

分享到:
评论

相关推荐

    动态编译字符串成java,并且添加class到jvm

    在Java编程中,动态编译字符串成Java代码并将其加载到JVM(Java虚拟机)是一种高级技巧,常用于运行时代码生成、元编程或插件系统等场景。这一技术的核心在于利用Java的反射API和Java Compiler API。下面将详细阐述...

    ASM操作字节码,动态生成Java类class文件

    6. 最后,通过`ClassLoader`将生成的字节码加载为实际的Java类。 通过这样的方式,ASM可以帮助我们深入理解Java字节码,同时也为我们提供了强大的工具来实现动态代码生成,这对于实现诸如AOP这样的高级编程模式至关...

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

    Java动态生成代码并编译载入是一个高级的编程技术,主要用于那些需要在应用程序运行时根据某些模板和数据动态地生成、编译和加载Java代码的场景。这种技术在需要高度定制化处理或是运行时参数化生成业务逻辑的系统中...

    Java语言-动态编译代码并热加载类

    在Java编程中,动态编译代码并热加载类是一项重要的技术,它允许程序在运行时修改或添加新的类,而无需重启应用。这种能力对于快速迭代开发、调试和性能优化非常有用。本主题将深入探讨Java中的动态编译与热加载机制...

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

    Java动态生成代码并编译载入是Java编程中的一项高级技术,它允许程序在运行时创建新的类或接口,然后即时编译并加载到当前的Java虚拟机(JVM)中。这种技术主要依赖于Java的反射API和Java的编译器API(javac)或者更...

    java动态编译指定java文件且将java文件生成jar

    本教程将深入讲解如何实现这个过程,主要关注`java动态编译`和`将class生成jar`这两个关键步骤,同时会涉及到`JavaCompiler` API的使用。 首先,让我们了解`JavaCompiler` API。这是Java标准库中的一部分,位于`...

    java热加载Class文件

    Java热加载Class文件是开发者在调试和优化代码时非常实用的一种技术,它允许开发者在不重启JVM的情况下更新和替换已加载的类,极大地提高了开发效率。本文将深入探讨Java热加载Class文件的相关知识点。 首先,理解...

    动态生成、编译、运行java文件

    在IT行业中,动态生成、编译以及运行Java文件是一项重要的技术,它允许程序在运行时创建新的Java代码并执行。这种技术广泛应用于元编程、插件系统、代码自动生成等场景,极大地提高了软件的灵活性和可扩展性。下面将...

    Java代码执行漏洞中类动态加载的应用1

    在Java编程中,类动态加载是一项重要的特性,它允许程序在运行时加载未知或自定义的类。这个特性在某些场景下非常有用,如插件系统、热部署以及安全相关的利用。本文主要探讨了Java代码执行漏洞中类动态加载的应用,...

    Java调用Groovy,实时动态加载数据库groovy脚本

    - **热部署**:当Groovy脚本更新时,无需重新编译或重启Java应用,只需更新数据库中的脚本,Java程序就能即时感知并执行新的逻辑。 - **灵活的业务逻辑**:业务规则可以根据需求快速调整,无需改变Java源码,降低...

    android 动态加载class

    在Android开发中,动态加载Class是一项重要的技术,它允许应用程序在运行时加载未知或更新的类,从而提高软件的灵活性和可扩展性。这在处理插件化、热修复或者模块化开发时尤为常见。本篇文章将深入探讨如何在...

    java 动态编译打包 动态编译可以用于实现动态代码生成、动态加载、插件化等功能

    Java 动态编译打包是Java开发中的一个重要技术,它允许程序在运行时生成和编译源代码,然后即时加载到应用程序中。这种技术在许多场景下都非常有用,例如实现动态代码生成、动态加载和插件化系统。下面将详细讨论...

    动态编译、加载java类

    在Java编程中,动态编译和加载类是一种高级特性,它允许程序在运行时编译源代码并将其加载到Java虚拟机(JVM)中。这种能力对于开发灵活性高、可扩展性强的应用程序非常有用,比如在服务器端处理动态生成的代码、...

    JAVA类加载机制与动态代理

    类加载机制负责将描述类的数据从`.class`文件加载到内存,并进行必要的校验、转换解析和初始化,使之成为可以被Java虚拟机直接使用的Java类型。根据Java虚拟机规范的规定,在以下几种情况下必须对类进行初始化: 1....

    根据java文件动态生成Mysql表.rar

    在Java编程语言中,动态编译加载是一项强大的功能,它允许程序在运行时编译和加载新的类,为软件提供更高的灵活性和可扩展性。在本案例中,"根据java文件动态生成Mysql表.rar" 提供了一种方法,通过Java来动态地生成...

    Java之——类热加载

    要实现类的热加载,通常需要先动态编译修改后的源代码,生成新的字节码文件,然后使用自定义类加载器加载这个新版本的类。Java的`javac`工具可用于编译源代码,`ASM`或`Javassist`库可以方便地操作字节码。 5. ...

    jvm 加载class文件

    Java作为一种动态性极强的解释型编程语言,在程序运行时,Java虚拟机(JVM)负责将编译生成的`.class`文件加载到内存中进行执行。在Java环境中,每个类(Class)以及接口(Interface)都会对应一个`.class`文件,...

    JAVA 将class打包为jar

    在Java开发中,将多个Class文件打包成一个JAR(Java Archive)文件是一种常见的做法,这有助于简化项目的部署过程并提高代码的可管理性。本文将详细介绍如何通过不同的方法将Class文件打包为JAR文件,并解释每一步的...

    javac编译成功用java运行class文件出现“找不到或无法加载主类”的问题解决起来很简单.doc

    "解决 Java 编译成功后运行 Class 文件出现“找不到或无法加载主类”的问题" 在 Java 开发中,经常会遇到一个问题,即 javac 编译成功后,用 java 运行 Class 文件却出现“找不到或无法加载主类”的错误信息。这种...

    java随机动态生成汉字验证码图片

    Java提供了`java.awt.Font`类,可以通过`Font.createFont()`方法加载字体文件并调整大小。 3. **创建图片**:使用`java.awt.image.BufferedImage`类创建一个新的图片对象,设定其宽度和高度。验证码通常包含4-6个...

Global site tag (gtag.js) - Google Analytics