精华内容
下载资源
问答
  • public 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
    http://youjavait.com/ 

    http://youjavait.com/

     

     

     

     

     

     

     

    展开全文
  • 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内存模型的设计原理,让我们更清晰的认识数据在内存中的表现,使我们能够可以更好的使用他们,也能让我们在开发中避开很多问题。学知识并非翻翻书那么简单,况且即使学会了,不使用也会忘记的。...
  • C/C++ JAVA 在线编译器

    千次阅读 2010-12-19 16:01:00
    1.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在线编译器实现 代码注释很多,直接上代码 目录结构: 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文件肯定要本地下载jdk和jre或者使用集成IDE(Eclipse,NetBeans),这个网站干脆将编译工作放到服务器上去,让你可以在线编译,得出错误信息,更难得的是还可运行,当然不能做图形和文件操作,因为它...
  • 原标题:五个免费在线Java编译器,轻松编译代码Java编译器网络版成为有用的在许多情况下。例如,假设你正在编写一个Java代码,但不在自己的...但如果不想错过它,可以尝试免费的在线编译器分享收藏。现在,在这...
  • 在线java编译器

    万次阅读 2017-11-28 14:34:13
    发下一个完整,里面有各种编程语言的编译工具,可以在线编辑使用。 收藏下。 j在线java编译器地址。 https://www.tutorialspoint.com/compile_java_online.php
  • JavaiOS版编译器是一款专业的java手机编译器,完美实现了java的编译和运行,开发者不再借助eclipse和IDEA也能在手机上完美的运行java代码了,而且支持在线java文件导入导出,支持换行符不用担心自己看不到错误了,...
  • 一款简易Java在线编译器 youjavait.com
  • 您想开始使用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代码编译器 最近在做一个onlinejudge的项目,首先最头疼的就是实现代码编辑器,我的需求是:想让用户可以在网站里写代码,然后实现在线编译,可以自己输入测试用例,如果报错,则提示错误信息 ...
  • https://tool.lu/coderunner/支持C、C++、java、php、Python等
  • 在线编译器

    2011-05-16 14:06:00
    专门针对java在线编译器: http://youjavait.com/<br />  超多语言选择的在线编译器: 并且提供了一整套ideone API. http://ideone.com/
  • 这是一个在线编译器,可以编译和运行C \ C ++和Java程序。 这个在线编译器是我第五学期项目“ RUET Online Judge”的一部分。 该在线编译器由开发 语言能力 C,C ++和Java 要求 Linux,gcc,g ++,Java编译器和Lampp...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 197
精华内容 78
关键字:

java在线编译器

java 订阅