`
wuzijingaip
  • 浏览: 329927 次
  • 性别: 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最新反编译工具及配置过程

    Java反编译是将已编译的字节码(.class文件)转换回源代码的过程,这对于理解已加密或混淆的代码,或者查看开源库的内部实现非常有用。本文将详细介绍如何使用最新的Java反编译工具及其配置过程。 首先,我们要了解...

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

    这个"JAVA远程控制范围对象示例代码"就是关于如何使用RMI创建和使用远程对象的一个实例。 RMI的核心概念包括三个部分:远程接口、远程实现和注册表。首先,远程接口定义了可以在远程服务器上调用的方法,这些接口...

    java反编译软件luyten

    5. 调试支持:Luyten可以连接到Java远程调试服务器,使开发者能在反编译的代码中设置断点,进行单步调试,这对于分析运行时行为非常有帮助。 6. 颜色编码:源代码显示时,Luyten会根据语法高亮显示,使得代码更易读...

    Java下载图片代码+教程

    2. **编译Java源代码**:使用命令行工具(如Windows的CMD或Linux的终端)编译Java源文件。 3. **运行Java程序**:运行编译后的`.class`文件,完成图片的下载。 #### 三、代码详解 ##### 1. Java源代码分析 ```...

    java实现远程控制

    一、Java远程控制基础 Java提供了丰富的API和框架来支持远程控制,如RMI(Remote Method Invocation)、JMX(Java Management Extensions)和JSR 160 RMI-SSH Bridge等。这些技术使开发者能够构建分布式系统,实现跨...

    JAVA Socket远程执行任务

    提供的文件列表中,`Distributed.iml`是IntelliJ IDEA项目的配置文件,`word.txt`可能包含示例的说明文档,`src`目录包含了Java源代码,`.idea`目录存储了IDE的项目设置,`out`目录则是编译生成的字节码文件。...

    Java反编译工具详解(4款主流反编译工具).pdf

    虽然Arthas主要不是一个反编译工具,但它可以用于在服务器上查看运行中的Java应用程序的代码,这对于远程故障排查非常有用。 这四款工具各有特色,适用于不同的场景。Jadclipse和JD-GUI适合Eclipse用户,Luyten和...

    Java反编译工具——XJad.zip

    Java反编译工具是开发人员在进行代码逆向工程时常用的一种工具,它们可以将已编译的Java字节码转换回源代码形式,帮助开发者理解已有的二进制类文件,或者在丢失源代码的情况下恢复部分功能。XJad是这样的一个工具,...

    java远程监控源码

    标题“Java远程监控源码”涉及的是Java编程中关于远程监控和控制的实现。这个项目可能包含一个客户端(client)和服务器端(server)的架构,通过Socket通信进行数据交互,利用Java Robot类来捕获屏幕图像,以及...

    基于Socket实现远程编译运行Fortran程序源码

    在"基于Socket实现远程编译运行Fortran程序源码"的项目中,服务器端的职责是接收客户端发送的Fortran源代码,编译它,并运行生成的可执行文件。这通常涉及以下步骤: 1. 创建ServerSocket监听特定的端口。 2. 当...

    基于Java的远程屏幕监控系统

    开发环境为JDK6(Java Development Kit 6)和NetBeans 6.5,这表明项目依赖于这些工具进行代码编写、编译以及集成开发。 【标签】"java 远程屏幕监控"进一步强调了技术栈的焦点,即使用Java语言实现远程屏幕监控...

    java写的远程控制

    标题中的“java写的远程控制”指的是使用Java编程语言开发的一款远程控制软件。Java是一种多平台兼容的、面向对象的编程语言,因其跨...对于想要学习Java远程控制软件开发的初学者来说,这是一个非常有价值的实践项目。

    基于JAVACS远程监控系统软件的实现.pdf

    Eclipse提供了一个用于Java开发的IDE,支持代码编辑、调试、构建和部署。JAVACS远程监控系统的开发很可能就是在Eclipse环境中进行的,这一点通过提及Eclipse及其支持的JDK版本(如JDK1.5.0)可以推断出来。 5. 文件...

    Google Protobuf 编译 成 java 文件

    这会将`my_message.proto`编译为Java代码,并将其放在当前目录下。 4. 生成的Java代码:编译器会为每个消息类型生成一个Java类,该类提供了序列化和反序列化的方法。在上面的例子中,将会生成一个名为`Person`的...

    RMI远程调用代码及使用方法

    1. **编译Java源代码**:将所有相关的Java文件编译成`.class`文件。 2. **生成存根和骨架类**:使用`rmic`命令生成`AddServerImpl_Stub.class`等文件。 3. **启动RMI注册表**:使用`rmiregistry`命令启动监听特定...

    本地java实现远程oracle备份还原

    1. **连接远程Oracle数据库**:使用Java的JDBC(Java Database Connectivity)API,我们需要编写代码来建立与远程Oracle数据库的连接。这需要Oracle的JDBC驱动(如ojdbc.jar)并正确配置数据库连接参数,包括服务器...

    java远程屏幕监控

    Java远程屏幕监控是一种技术,允许一个程序或系统从一个位置获取另一个位置的计算机屏幕的实时视图。在Java中实现这种功能通常涉及到网络编程、图形用户界面(GUI)以及可能的多线程技术。这个压缩包包含客户端和...

    Java语言实现远程控制jar+源代码

    Java语言实现远程控制的技术主要基于VNC(Virtual Network ...通过这个Java远程控制项目,开发者不仅可以学习到远程控制技术,还能提升Java网络编程和图形处理的能力,对于软件开发、系统运维等领域都具有实际意义。

    VNC服务端 java客户端

    如果这是一个Java项目,那么这个文件可能包含了源代码、编译后的类文件、配置文件等。使用这些文件,开发者可以了解VNC客户端的实现细节,甚至可以进行二次开发,定制适合自己需求的远程桌面解决方案。 总的来说,...

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

    各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例 各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模型源代码 ...

Global site tag (gtag.js) - Google Analytics