-
java在线编译器手机版_JAVA在线编译器模拟
2021-02-26 18:48:44public class CompileAndRunJavaFile extends HttpServlet{private static ...//执行子进程/*** 编译并且运行JAVA代码* @author Maple*/@Overrideprotected void doPost(HttpServletRequest req, HttpServletRespon...public class CompileAndRunJavaFile extends HttpServlet{
private static Process process ;//执行子进程
/**
* 编译并且运行JAVA代码
* @author Maple
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String code = req.getParameter("code");//获取页面参数
String className = null; //类名
String classStr = null;
BufferedWriter bw = null;
try{
classStr = code.substring(code.indexOf("public class"),code.indexOf("{")).toString();//获取类名字符串
String[] classStrArray = classStr.split("\\s{1,}");//按空格分开
if(classStrArray.length!=3){
req.setAttribute("msg", "编译失败:格式不符合规范,请检查类名是否正确(如:public class YouClassName{})");
}
else{
className = classStrArray[classStrArray.length-1];
File sourceFile = new File(className+".java");//保存源代码
if(sourceFile.exists()){
sourceFile.delete();
}
FileWriter fr = new FileWriter(sourceFile);
bw = new BufferedWriter(fr);
bw.write(code);
bw.close();
fr.close();
Runtime runtime = Runtime.getRuntime();
process = runtime.exec("cmd");
Thread.sleep(1000);//防止cmd.exe程序未启动,当然也可以直接使用javac命令
//往控制台注入命令
bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("javac "+className+".java \n");
bw.flush();
long startFreeMemory = runtime.freeMemory();//Java 虚拟机中的空闲内存量
//执行时间也是无法知道,因为dos执行java命令,程序无法知道它到底执行到那里了,两个进程,互不了解
long startCurrentTime = System.currentTimeMillis();//获取系统当前时间
bw.write("java "+className+" \n");
bw.close();
//获取控制台输出的结果
Thread runtimeInput = new Thread(new RuntimeInput());
runtimeInput.start();
//获取内存信息,实际过程中,是无法得到这个程序到底多少内存,内存的分配有操作系统决定,如果
//程序需要,系统会动态分配内存,如果有对象没有引用,可能会被垃圾回收器回收,所以是无法得到到底多少内存的
//如果你有办法知道,可以留言,现在得到程序运行前后内存使用率,不过输出的是0,因为程序退出,不占内存了
Thread.sleep(1000);
long endCurrentTime = System.currentTimeMillis();
long endFreeMemory = runtime.freeMemory();
double useMemory = (startFreeMemory-endFreeMemory)/1024;
System.out.println("开始时间:"+startCurrentTime);
System.out.println("结束时间:"+endCurrentTime);
long useTime = endCurrentTime-startCurrentTime;
req.setAttribute("msg","编译成功,使用时间:"+useTime+"毫秒");//这个使用时间是大概的,不精确
}
}
catch(Exception e){
e.printStackTrace();
req.setAttribute("msg", "格式不符合规范,请检查类名是否正确(如:public class YouClassName{}).错误信息:"+e.getMessage());
}
req.getRequestDispatcher("/test.jsp").forward(req, resp);
}
public class RuntimeInput implements Runnable{
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String content = null;
try {
while((content = br.readLine()) != null){
System.out.println(content);//如果想把结果输出到页面,直接定义变量就行
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class CompileAndRunJavaFile extends HttpServlet{
private static Process process ;//执行子进程
/**
* 编译并且运行JAVA代码
* @author Maple
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String code = req.getParameter("code");//获取页面参数
String className = null; //类名
String classStr = null;
BufferedWriter bw = null;
try{
classStr = code.substring(code.indexOf("public class"),code.indexOf("{")).toString();//获取类名字符串
String[] classStrArray = classStr.split("\\s{1,}");//按空格分开
if(classStrArray.length!=3){
req.setAttribute("msg", "编译失败:格式不符合规范,请检查类名是否正确(如:public class YouClassName{})");
}
else{
className = classStrArray[classStrArray.length-1];
File sourceFile = new File(className+".java");//保存源代码
if(sourceFile.exists()){
sourceFile.delete();
}
FileWriter fr = new FileWriter(sourceFile);
bw = new BufferedWriter(fr);
bw.write(code);
bw.close();
fr.close();
Runtime runtime = Runtime.getRuntime();
process = runtime.exec("cmd");
Thread.sleep(1000);//防止cmd.exe程序未启动,当然也可以直接使用javac命令
//往控制台注入命令
bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("javac "+className+".java \n");
bw.flush();
long startFreeMemory = runtime.freeMemory();//Java 虚拟机中的空闲内存量
//执行时间也是无法知道,因为dos执行java命令,程序无法知道它到底执行到那里了,两个进程,互不了解
long startCurrentTime = System.currentTimeMillis();//获取系统当前时间
bw.write("java "+className+" \n");
bw.close();
//获取控制台输出的结果
Thread runtimeInput = new Thread(new RuntimeInput());
runtimeInput.start();
//获取内存信息,实际过程中,是无法得到这个程序到底多少内存,内存的分配有操作系统决定,如果
//程序需要,系统会动态分配内存,如果有对象没有引用,可能会被垃圾回收器回收,所以是无法得到到底多少内存的
//如果你有办法知道,可以留言,现在得到程序运行前后内存使用率,不过输出的是0,因为程序退出,不占内存了
Thread.sleep(1000);
long endCurrentTime = System.currentTimeMillis();
long endFreeMemory = runtime.freeMemory();
double useMemory = (startFreeMemory-endFreeMemory)/1024;
System.out.println("开始时间:"+startCurrentTime);
System.out.println("结束时间:"+endCurrentTime);
long useTime = endCurrentTime-startCurrentTime;
req.setAttribute("msg","编译成功,使用时间:"+useTime+"毫秒");//这个使用时间是大概的,不精确
}
}
catch(Exception e){
e.printStackTrace();
req.setAttribute("msg", "格式不符合规范,请检查类名是否正确(如:public class YouClassName{}).错误信息:"+e.getMessage());
}
req.getRequestDispatcher("/test.jsp").forward(req, resp);
}
public class RuntimeInput implements Runnable{
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String content = null;
try {
while((content = br.readLine()) != null){
System.out.println(content);//如果想把结果输出到页面,直接定义变量就行
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
-
Java在线编译器
2011-10-03 19:46:52 -
java在线编译器
2010-01-04 22:08:00 -
JAVA在线编译器模拟
2016-12-23 16:54:52有很多网站提供在线编译运行java代码,不过大家要做好安全工作,防止恶意浏览者攻击,下面做一个雏形,欢迎大家改进 [code="java"]public class CompileAndRunJavaFile extends HttpServlet{ ...有很多网站提供在线编译运行java代码,不过大家要做好安全工作,防止恶意浏览者攻击,下面做一个雏形,欢迎大家改进
public class CompileAndRunJavaFile extends HttpServlet{
private static Process process ;//执行子进程
/**
* 编译并且运行JAVA代码
* @author Maple
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String code = req.getParameter("code");//获取页面参数
String className = null; //类名
String classStr = null;
BufferedWriter bw = null;
try{
classStr = code.substring(code.indexOf("public class"),code.indexOf("{")).toString();//获取类名字符串
String[] classStrArray = classStr.split("\\s{1,}");//按空格分开
if(classStrArray.length!=3){
req.setAttribute("msg", "编译失败:格式不符合规范,请检查类名是否正确(如:public class YouClassName{})");
}
else{
className = classStrArray[classStrArray.length-1];
File sourceFile = new File(className+".java");//保存源代码
if(sourceFile.exists()){
sourceFile.delete();
}
FileWriter fr = new FileWriter(sourceFile);
bw = new BufferedWriter(fr);
bw.write(code);
bw.close();
fr.close();
Runtime runtime = Runtime.getRuntime();
process = runtime.exec("cmd");
Thread.sleep(1000);//防止cmd.exe程序未启动,当然也可以直接使用javac命令
//往控制台注入命令
bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("javac "+className+".java \n");
bw.flush();
long startFreeMemory = runtime.freeMemory();//Java 虚拟机中的空闲内存量
//执行时间也是无法知道,因为dos执行java命令,程序无法知道它到底执行到那里了,两个进程,互不了解
long startCurrentTime = System.currentTimeMillis();//获取系统当前时间
bw.write("java "+className+" \n");
bw.close();
//获取控制台输出的结果
Thread runtimeInput = new Thread(new RuntimeInput());
runtimeInput.start();
//获取内存信息,实际过程中,是无法得到这个程序到底多少内存,内存的分配有操作系统决定,如果
//程序需要,系统会动态分配内存,如果有对象没有引用,可能会被垃圾回收器回收,所以是无法得到到底多少内存的
//如果你有办法知道,可以留言,现在得到程序运行前后内存使用率,不过输出的是0,因为程序退出,不占内存了
Thread.sleep(1000);
long endCurrentTime = System.currentTimeMillis();
long endFreeMemory = runtime.freeMemory();
double useMemory = (startFreeMemory-endFreeMemory)/1024;
System.out.println("开始时间:"+startCurrentTime);
System.out.println("结束时间:"+endCurrentTime);
long useTime = endCurrentTime-startCurrentTime;
req.setAttribute("msg","编译成功,使用时间:"+useTime+"毫秒");//这个使用时间是大概的,不精确
}
}
catch(Exception e){
e.printStackTrace();
req.setAttribute("msg", "格式不符合规范,请检查类名是否正确(如:public class YouClassName{}).错误信息:"+e.getMessage());
}
req.getRequestDispatcher("/test.jsp").forward(req, resp);
}
public class RuntimeInput implements Runnable{
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String content = null;
try {
while((content = br.readLine()) != null){
System.out.println(content);//如果想把结果输出到页面,直接定义变量就行
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class CompileAndRunJavaFile extends HttpServlet{
private static Process process ;//执行子进程
/**
* 编译并且运行JAVA代码
* @author Maple
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String code = req.getParameter("code");//获取页面参数
String className = null; //类名
String classStr = null;
BufferedWriter bw = null;
try{
classStr = code.substring(code.indexOf("public class"),code.indexOf("{")).toString();//获取类名字符串
String[] classStrArray = classStr.split("\\s{1,}");//按空格分开
if(classStrArray.length!=3){
req.setAttribute("msg", "编译失败:格式不符合规范,请检查类名是否正确(如:public class YouClassName{})");
}
else{
className = classStrArray[classStrArray.length-1];
File sourceFile = new File(className+".java");//保存源代码
if(sourceFile.exists()){
sourceFile.delete();
}
FileWriter fr = new FileWriter(sourceFile);
bw = new BufferedWriter(fr);
bw.write(code);
bw.close();
fr.close();
Runtime runtime = Runtime.getRuntime();
process = runtime.exec("cmd");
Thread.sleep(1000);//防止cmd.exe程序未启动,当然也可以直接使用javac命令
//往控制台注入命令
bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("javac "+className+".java \n");
bw.flush();
long startFreeMemory = runtime.freeMemory();//Java 虚拟机中的空闲内存量
//执行时间也是无法知道,因为dos执行java命令,程序无法知道它到底执行到那里了,两个进程,互不了解
long startCurrentTime = System.currentTimeMillis();//获取系统当前时间
bw.write("java "+className+" \n");
bw.close();
//获取控制台输出的结果
Thread runtimeInput = new Thread(new RuntimeInput());
runtimeInput.start();
//获取内存信息,实际过程中,是无法得到这个程序到底多少内存,内存的分配有操作系统决定,如果
//程序需要,系统会动态分配内存,如果有对象没有引用,可能会被垃圾回收器回收,所以是无法得到到底多少内存的
//如果你有办法知道,可以留言,现在得到程序运行前后内存使用率,不过输出的是0,因为程序退出,不占内存了
Thread.sleep(1000);
long endCurrentTime = System.currentTimeMillis();
long endFreeMemory = runtime.freeMemory();
double useMemory = (startFreeMemory-endFreeMemory)/1024;
System.out.println("开始时间:"+startCurrentTime);
System.out.println("结束时间:"+endCurrentTime);
long useTime = endCurrentTime-startCurrentTime;
req.setAttribute("msg","编译成功,使用时间:"+useTime+"毫秒");//这个使用时间是大概的,不精确
}
}
catch(Exception e){
e.printStackTrace();
req.setAttribute("msg", "格式不符合规范,请检查类名是否正确(如:public class YouClassName{}).错误信息:"+e.getMessage());
}
req.getRequestDispatcher("/test.jsp").forward(req, resp);
}
public class RuntimeInput implements Runnable{
@Override
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String content = null;
try {
while((content = br.readLine()) != null){
System.out.println(content);//如果想把结果输出到页面,直接定义变量就行
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
来源:http://www.shangxueba.com/jingyan/1860918.html -
java在线编译器_简述Java内存模型
2020-11-29 19:28:53本章节主要介绍Java内存模型的设计原理,让我们更清晰的认识数据在内存中的表现,使我们能够可以更好的使用他们,也能让我们在开发中避开很多问题。学知识并非翻翻书那么简单,况且即使学会了,不使用也会忘记的。... -
C/C++ JAVA 在线编译器
2010-12-19 16:01:001.JAVA在线编译器: http://youjavait.com/开始可能没有框架代码(如主函数等),可[Projects],再将网页后退.例:package com;public class Test{public static void main(String[] args){System.out.println("hello, my... -
源码:JAVA在线编译器模拟
2017-03-20 16:15:59有很多网站提供在线编译运行java代码,不过大家要做好安全工作,防止恶意浏览者攻击,下面做一个雏形,欢迎大家改进 [java] public class CompileAndRunJavaFile extends HttpServlet{ private static Process ... -
-
用超简单的python代码实现Java在线编译器
2017-06-29 16:25:48原理参照python在线编译器实现 代码注释很多,直接上代码 目录结构: OnlineEXEC |----zxby.py |----test.bat(因为测试环境是windows,linux可以自行改成shell) |----app |----flaskrun.py zxby.py代码实现: ... -
java在线编译器(一)
2010-12-10 19:55:14看到很多judge online软件均实现了c,c++,java等语言的在线编译,并且把执行结果返回到交互页面。分析了一下原理,现在说说我的实现思路。 1. 将用户写在表单中程序在服务器的用户特定目录生成相应的.java文件。 2... -
java在线编译器-youjavait.com
2009-12-25 21:19:53正常编译运行java文件肯定要本地下载jdk和jre或者使用集成IDE(Eclipse,NetBeans),这个网站干脆将编译工作放到服务器上去,让你可以在线编译,得出错误信息,更难得的是还可运行,当然不能做图形和文件操作,因为它... -
在线java编译器_五个免费在线Java编译器,轻松编译代码
2021-02-12 10:20:57原标题:五个免费在线Java编译器,轻松编译代码Java编译器网络版成为有用的在许多情况下。例如,假设你正在编写一个Java代码,但不在自己的...但如果不想错过它,可以尝试免费的在线编译器分享收藏。现在,在这... -
在线java编译器
2017-11-28 14:34:13发下一个完整,里面有各种编程语言的编译工具,可以在线编辑使用。 收藏下。 j在线java编译器地址。 https://www.tutorialspoint.com/compile_java_online.php -
Java编译器 iOS_Java编译器
2021-02-12 16:32:18JavaiOS版编译器是一款专业的java手机编译器,完美实现了java的编译和运行,开发者不再借助eclipse和IDEA也能在手机上完美的运行java代码了,而且支持在线java文件导入导出,支持换行符不用担心自己看不到错误了,... -
youjavait.com - 在线Java编译器
2010-01-15 22:25:00一款简易Java在线编译器 youjavait.com -
学生java用什么编译器_面向学生的6大在线Java编译器
2020-06-14 08:55:21您想开始使用Java吗?... 如今,有许多在线编译器和IDE。 与台式机相比,它们具有明显的优势。 易于设置–无需下载; 没有安装; 没有PATH变量。 快速入门–许多功能只需几秒钟即可打开,而Ecl... -
Java在线反编译器
2019-02-20 09:33:31在线把class文件反编译为java文件 http://www.javadecompilers.com(优点是可以处理较大class文件,15K以上;缺点是反编译后的java需要手动下载) http://javare.cn(优点是java文件在线查看;缺点是无法处理大于15K... -
java 实现c,c++,java代码编译器
2021-01-07 14:04:38java 实现c,c++,java代码编译器 最近在做一个onlinejudge的项目,首先最头疼的就是实现代码编辑器,我的需求是:想让用户可以在网站里写代码,然后实现在线编译,可以自己输入测试用例,如果报错,则提示错误信息 ... -
【java资料超链接】【java在线版编译器】
2018-03-01 18:04:20https://tool.lu/coderunner/支持C、C++、java、php、Python等 -
在线编译器
2011-05-16 14:06:00专门针对java的在线编译器: http://youjavait.com/<br /> 超多语言选择的在线编译器: 并且提供了一整套ideone API. http://ideone.com/ -
Online-Compiler:这是一个在线编译器,可以编译并运行C \ C ++和Java程序。 这个在线编译器是我第五学期...
2021-01-31 13:58:04这是一个在线编译器,可以编译和运行C \ C ++和Java程序。 这个在线编译器是我第五学期项目“ RUET Online Judge”的一部分。 该在线编译器由开发 语言能力 C,C ++和Java 要求 Linux,gcc,g ++,Java编译器和Lampp...
-
Unity RUST 逆向安全开发
-
DDC_SINCOS_7S_V1_0
-
python课件.rar
-
项目管理工具与方法
-
实现 MySQL 读写分离的利器 mysql-proxy
-
Tribological-behaviour-and-wear-mechanism-of-MoS2-Cr-coat_2003_Tribology-Int.pdf
-
19年实务真题下午.pdf
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表
-
Reliability Engineering_ Theory and Practice-.pdf
-
windows下编译调试PostgreSQL
-
MySQL 事务和锁
-
Django TypeError: argument of type ‘PosixPath‘ is not iterable
-
org.apache.log4j.Logger 使用jar包
-
中文分词词典UserDict.txt
-
龙芯生态应用开发基础:C语言精要
-
SAPCAR.zip
-
linux中type 、file、stat三者的区别
-
2019年-华启学院中级通信工程师综合能力真题及答案(完整版).pdf
-
华为1+X认证——网络系统建设与运维(初级)