Java动态编译

Java动态编译

一、动态编译简介

new创建对象是静态加载类,在编译时刻就需要加载所有可能使用到的类。

一百个类,有一个类错了,都无法编译。

通过动态加载类可以解决该问题

二、代码实例

2.1 OfficeBetter.java

main接口

里面通过对Class类的动态编译

然后调用实例,完成动态编译

 1 public class OfficeBetter {
 2
 3     public static void main(String[] args) throws InstantiationException, IllegalAccessException {
 4         try {
 5             //动态加载类,在运行时刻加载
 6             Class c =Class.forName(args[0]);
 7             //通过类类型,创建该类对象
 8             OfficeAble oa =(OfficeAble)c.newInstance();
 9             oa.start();
10         } catch (ClassNotFoundException e) {
11             e.printStackTrace();
12         }
13
14     }
15
16 }

2.2 OfficeAble.java

一个接口而以,方便word时,也方便excel是用

1 public interface OfficeAble {
2     public void start();
3 }

2.3 Word.java

实现OfficeAble接口,

动态编译就在于wold的时候直接用word类就好,excel的时候直接用excel就好

原来写的所有的东西都不需要再重新编译,只要运行新功能就好了

1 public class Word implements OfficeAble{
2
3     public void start() {
4         System.out.println("word....starts...");
5     }
6
7 }
时间: 2024-08-23 10:08:33

Java动态编译的相关文章

java 动态编译

一.图示: 二.代码演示 package com.hy; import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.lang.reflect.Constructor; import java.net.URL; import java.net.URLClassLoader; import javax.tools.JavaCompiler; import javax

java动态编译类文件并加载到内存中

如果你想在动态编译并加载了class后,能够用hibernate的数据访问接口以面向对象的方式来操作该class类,请参考笔者的这篇博文-(该博文暂未发布) 所谓动态编译,就是在程序运行时产生java类,并编译成class文件. 一.这里介绍两种动态编译java文件的方式. 第一种:使用Runtime执行javac命令 /** * 编译java类 * 使用Runtime执行javac命令 * @param name 类的全限定包名 不带后缀 例如com.test.Notice 而不要写成com.

java 动态编译图

原文地址:https://blog.51cto.com/14437184/2437964

Java_Java SE6调用动态编译

转自:http://www.cnblogs.com/flyoung2008/archive/2011/11/14/2249017.html 一.使用JavaCompiler接口编译java源程序 我们可以通过ToolProvider类的静态方法getSystemJavaCompiler来得到一个JavaCompiler接口的实例. JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaCompiler中最核心的方法是r

java内存动态编译执行

1.package org.jui.core.dynamic; public class DynaCompTest { public static void main(String[] args) throws Exception { String fullName = "DynaClass"; StringBuilder src = new StringBuilder(); src.append("public class DynaClass {\n"); src

动态生成java、动态编译、动态加载

我曾经见过一个“规则引擎”,是在应用系统web界面直接编写java代码,然后保存后,规则即生效,我一直很是奇怪,这是如何实现的呢?实际这就好像jsp,被中间件动态的编译成java文件,有被动态的编译成class,同时又动态的加载到classloader中.所以,本质上,纯java得规则引擎,是100%可以实现的. 1.动态生成java源代码.这个过程太过简单,直接略过. 2.动态编译. 我看我们自己的规则引擎也有动态编译,就是在生成BOM模型的时候.但是是调用Process执行javac.但这种

java的动态编译功能

import javax.tools.JavaCompiler; import javax.tools.ToolProvider; /** * java的动态编译 * @author Administrator * */ public class Demo04 { public static void main(String[] args) { JavaCompiler compiler=ToolProvider.getSystemJavaCompiler(); int result = com

Java程序动态编译Java源文件

最近接触到公司一个项目,需要将生成的源码动态编译,记录下学习过程. 先贴出官网推荐写法: JavaCompiler.CompilationTask getTask(Writer out,                                     JavaFileManager fileManager,                                     DiagnosticListener<? super JavaFileObject> diagnosticL

JAVA之动态编译

通过Java动态生成class文件 今天说下JAVA中的动态编译,这个功能根据我现在的了解好像没有见到过用的,我Jio的吧,现在的一些在线代码编缉器可以用到了,这个具体我也不是很清楚.感兴趣的大家可以自已了解下. 说到动态编缉大家可能会想到,动态编缉肯定不是像我们平时运行程序似的在本地的平台就开始编译了. 动态编译其实是在程序的运行过程中对Java文件的编译或者是运行.class的文件.比如说我今天想装一波,我写个java的程序,又写了个另一个java的程序在小伙伴面秀,我只运行一个java程序