在服务器上执行临时代码

本文介绍了如何在服务器上实现一个简单的远程执行功能,让用户能够提交Java代码并执行。通过本地编译、上传到服务器、类加载器加载、反射调用及控制台输出重定向等步骤,成功运行用户代码。参考了《深入理解Java虚拟机》第二版的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手动实现一个简单的远程执行功能, 用户在服务端执行临时代码

代码与灵感来自 《深入理解java虚拟机》第二版

程序实现思路

1. 如何编译提交到服务器的java代码

2. 如果执行编译后的代码

3. 如何收集java代码的执行结果

 

解决方案

1. 采取简单做法, 本机编译完, 上传到服务端

2. 类加载器加载类生成class对象, 反射调用对象方法

3. 在执行类中把System.out的符号引用替换为PringtStream的符号引用

 

主要依赖以下几个类

 

 

 

 

 

这时候在本机编写目标运行类

controller写个入口

运行 上传class文件

 

大工告成

 

深入理解java虚拟机

https://book.douban.com/subject/24722612/

网上引用的部分代码

https://github.com/zlserver/jvm_code/tree/master/%E7%AC%AC9%E7%AB%A0

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值