求大神,假如一个字符串里面是java代码,怎么得到这些代码的运行结果? RT,假设运行的最后结果都是输出某个结果,应该怎么做呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 String a="aaaaaaaa"+java+"aaaaaaa"; 那你为什么要放在字符串里面,直接用Request.getParameten()这个不就好了 1. 取得这些代码2. 编译3. 使用类加载器加载这些编译好的类进入内存4. 运行刚加载的类可以参考这里:java: 在程序中编译和执行java程序: http://www.cppblog.com/biao/archive/2009/06/12/87498.htmlJava:类的动态加载: http://www.cppblog.com/biao/archive/2010/05/19/115848.html理解上面这两个例子,就可以解决问题了. 1. 取得这些代码2. 发送到服务器3. 编译4. 使用类加载器加载这些编译好的类进入内存5. 运行刚加载的类6. 返回代码执行的结果或者编译错误Client与Server通讯使用AJAX 一个java工程或者一台机器肯定是实现不了了。要知道一个工程启动之前所有需要运行的代码全部都已经是编译完毕的。所以不能动态运行没编译的代码。你的问题的焦点就是在java代码的编译上边。试着一个工程编译代码(比如Batch)。然后另一个工程执行吧。 个人觉得是Runtime和Process来处理吧。。 1.首先是用IO将字符串中的内容输出到硬盘的某个文件中,文件用File来操作2.Runtime.exec("cmd javac d:/xxx.java");3.Runtime.exec("cmd java xxx");不过我觉得反射的话应该更好,不过鄙人对反射不怎么熟悉。。 楼主的这个要求绝对没有问题,动态加载编译好的class,然后使用这个class.因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。 楼主的这个要求绝对没有问题,动态加载编译好的class,然后使用这个class.因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。问题是他现在要加载的东西,还没有编译生成class文件。执行的时候只有java源码。主要是在加载之前如何自动生成某个要加载的java文件的class文件。 楼主的这个要求绝对没有问题,动态加载编译好的class,然后使用这个class.因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。问题是他现在要加载的东西,还没有编译生成class文件。执行的时候只有java源码。主要是在加载之前如何自动生成某个要加载的java文件的class文件。看我上面给的两个例子的连接就明白了。 只能编译 重定向输入 然后比较输出和ACM OJ类似 http://stackoverflow.com/questions/12173294/compiling-fully-in-memory-with-javax-tools-javacompiler 啊,我想到了一个办法,不过我不太清楚是否能行。1,先把获得的代码写入一个java文件2,调用一个shell用来编译该java文件3,使用代理创建该类 用JavaCompilerhttp://docs.oracle.com/javase/7/docs/api/index.html?javax/tools/JavaCompiler.html编译完用ClassLoader加载。注意必要的ClassLoader隔离。 还是动态语言方便,直接eval(str)就可以了 就是这种。可以去参考http://hustoj.sinaapp.com/这个OJ 编译 -> 运行 -> 输入输出重定向这些东西都比较简单,关键的问题是如何防御程序的非正常行为。 win7 + 数据库SQL server进来下 表单关联外表字段过多,显示方式问题 房地产系统 jspsmart上传文件 中文问号?谢谢 web.xml文件报错 resin4 80 端口启动问题 点击提交确定按钮checkbox选择状态不改变 怎样通过按纽将单选匡的值通过参数传给下一个jsp页面 我在Win2000中写了一个很简单的servlet程序,生成class后Tomcat已经完全可以运行的,但是把这个Class文件放到linux下(也是用Tomcat),但 制作一个大型页面之前的装载页面的原理是什么? 求WEB页面上传EXCEL数据至ORACLE 及导出源码样例 不会请指教
2. 编译
3. 使用类加载器加载这些编译好的类进入内存
4. 运行刚加载的类可以参考这里:
java: 在程序中编译和执行java程序: http://www.cppblog.com/biao/archive/2009/06/12/87498.html
Java:类的动态加载: http://www.cppblog.com/biao/archive/2010/05/19/115848.html理解上面这两个例子,就可以解决问题了.
2. 发送到服务器
3. 编译
4. 使用类加载器加载这些编译好的类进入内存
5. 运行刚加载的类
6. 返回代码执行的结果或者编译错误Client与Server通讯使用AJAX
试着一个工程编译代码(比如Batch)。然后另一个工程执行吧。
不过我觉得反射的话应该更好,不过鄙人对反射不怎么熟悉。。
因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。
因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。问题是他现在要加载的东西,还没有编译生成class文件。执行的时候只有java源码。主要是在加载之前如何自动生成某个要加载的java文件的class文件。
因为这样的事我以前在实际工程中就用了,而且很多开发工具的热部署也是这么做的。问题是他现在要加载的东西,还没有编译生成class文件。执行的时候只有java源码。主要是在加载之前如何自动生成某个要加载的java文件的class文件。
看我上面给的两个例子的连接就明白了。
和ACM OJ类似
1,先把获得的代码写入一个java文件
2,调用一个shell用来编译该java文件
3,使用代理创建该类
http://docs.oracle.com/javase/7/docs/api/index.html?javax/tools/JavaCompiler.html编译完用ClassLoader加载。注意必要的ClassLoader隔离。
这些东西都比较简单,关键的问题是如何防御程序的非正常行为。