【发布时间】:2016-08-03 15:45:26
【问题描述】:
使用java compiler API 我想在jsp 中编译一个java file。我创建了一个 html 文件并使用它的textArea 元素将其文本(预计是用户输入的 java 中的代码)发送到服务器上的 JSP,并在将其收集到字符串中后,我制作了一个带有 .java 扩展名的文件和用textArea 内容编写它然后我使用了编译器API,但它没有编译文件。我想做类似this
index.html
<form action="formAction.jsp" method="post">
Please enter your text:
<br/>
<textarea name="textarea1" rows="5"></textarea>
<br/>
<input type="SUBMIT" value="Submit"/>
</form>
formAction.jsp
<%
String convert = request.getParameter("textarea1");
PrintWriter wr = response.getWriter();
File f =new File("file121.java");
if(!f.exists())
{
f.createNewFile();
wr.println("File is created\n");
}
FileWriter write = new FileWriter(f);
BufferedWriter bf = new BufferedWriter(write);
bf.write(convert);
bf.close();
wr.println("File writing done\n");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null,null,null,"file121.java");
if(result==0){
wr.println("Compilation Successful");
}
else{
wr.println("Compilation Failed");
}
%>
【问题讨论】:
-
这在各个层面都是错误的。你不应该这样做。
-
Scriptlet 是一个坏主意。您是否试图允许人们发布源代码并在您的 JSP 中编译它?抱歉,从来没有那样使用过 JSP。我根本不再使用 JSP - 也是 90 年代。
-
第一个教训:不要指导客户做任何繁重的工作。
-
我曾经有一个在线编译器。一位深入维护 Java 编译器的人警告说,有一些简短的代码示例可能会使编译器占用 30 分钟或更长时间。我把它从公众视野中删除了。我认为 @duffymo 和 cmets 中其他人的观点是一个很好的引导。 不要这样做。
-
“请打开问题中提到的链接..” 我没有关注 SO 外部的链接。顺便说一句 - 仅仅因为某人做了某事,并不一定使它成为一个“好主意”。
标签: java jsp java-compiler-api online-compilation