`
wuzijingaip
  • 浏览: 319673 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 远程编译代码

阅读更多
package test;

import java.io.*;

/**
 * 动态执行一段代码(生成文件->编译->执行)
 * 
 * @author kingfish
 * @version 1.0
 */
public class TestRun {
	private String fileName = "Test.java";

	private String className = "Test.class";

	public TestRun() {
		File f = new File(fileName);
		if (f.exists())
			f.delete();

		f = new File(className);
		if (f.exists())
			f.delete();
	}

	/**
	 * 创建java文件
	 */
	public void createJavaFile(String body) {
		String head = "public class Test{\r\n  public static void runCode(){";

		String end = "\r\n  }\r\n}";
		try {
			DataOutputStream dos = new DataOutputStream(new FileOutputStream(
					fileName));
			dos.writeBytes(head);
			dos.writeBytes(body);
			dos.writeBytes(end);
			dos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 编译
	 */
	public int makeJavaFile() {
		int ret = 0;
		try {
			Runtime rt = Runtime.getRuntime();
			Process ps = rt.exec("cmd /c javac " + fileName);
			ps.waitFor();
			byte[] out = new byte[1024];
			DataInputStream dos = new DataInputStream(ps.getInputStream());
			dos.read(out);
			String s = new String(out);
			if (s.indexOf("Exception") > 0) {
				ret = -1;
			}
		} catch (Exception e) {
			ret = -1;
			e.printStackTrace();
		}
		return ret;
	}

	/**
	 * 反射执行
	 */
	public void run() {
		try {
			Class.forName("Test").getMethod("runCode", new Class[] {}).invoke(
					null, new Object[] {});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 测试
	 */
	public static void main(String[] args) {
		System.out.println();
		String cmd = "System.out.println(\"usage:java TestRun int i=1; System.out.println(i+100);\");";
		if (args.length >= 1) {
			cmd = args[0];
		}
		TestRun t = new TestRun();
		t.createJavaFile(cmd);
		if (t.makeJavaFile() == 0) {
			t.run();
		}
	}
}

分享到:
评论

相关推荐

    JAVA远程控制范围对象示例代码

    1, java远程控制访问示例代码 2,编译运行参考http://blog.csdn.net/realizelizijun2013/article/details/50097971

    JAVA上百实例源码以及开源项目源代码

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    jsch源代码_通过java代码ssh登录主机远程执行命令并返回

    jsch通过java代码ssh登录主机远程执行命令并返回结果。注意,这个是源代码,请自行编译后在使用。当然,也可以根据自己的需要更改源代码。

    java源码包---java 源码 大量 实例

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    JAVA上百实例源码以及开源项目

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    格式化jd-gui反编译源码的行号,便于debug调试

    这样的话我们在没有源文件的时候又希望能够远程调试代码几乎是不可能的。在这里写了个小工具,将行号和源文件的行号对应上。需要通过jd-gui反编译的代码保存为zip文件。该工具可以把通过制定文件夹把文件夹里的反...

    基于JAVA CS远程监控系统软件的实现(源代码+论文).zip

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean...JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

    JAVA本地监听与远程端口扫描(源代码+论文).zip

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean...JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

    java源码包2

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    编译原理大作业:词法分析器、语法分析器,java实现+源代码+文档说明

    编译原理大作业:词法分析器、语法分析器,java实现+源代码+文档说明 - - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分...

    北京航空航天大学编译原理课程作业,这里是 miniplc0 实验的 Java 版本+源代码+文档说明

    北京航空航天大学编译原理课程作业,这里是 miniplc0 实验的 Java 版本+源代码+文档说明 - 小白不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源...

    毕业设计-基于JAVA的本地监听与远程端口扫描(源代码+论文)

    随着Internet的不断发展,信息技术已成为社会进步的巨大推动力。不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要。...该程序是使用Java语言编译的。

    java开源包10

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java源码包4

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java源码包3

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    java开源包8

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    基于Java的远程视频会议系统(系统+论文).zip

    Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean...JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

    基于Java实现远程视频会议管理系统源码+数据库文件+文档说明

    Java程序由Java源代码编写,经过编译后生成Java字节码文件,然后在Java虚拟机上运行。 Java程序通常包括一个或多个类,每个类都包含了属性和方法。Java程序的入口点是一个特殊的类,它包含了一个名为main的方法,这...

Global site tag (gtag.js) - Google Analytics