son*_*ony -4 java jsp online-compilation java-compiler-api
使用java compiler API我想编一个java file在jsp.我创建了一个html文件并使用它的textArea元素我将其文本发送到服务器上的JSP,并将其收集到一个字符串中.java,textArea然后将其写入带有扩展名的文件,然后将其写入使用了编译器API,但它没有编译文件.我想要做的事像这样
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>
Run Code Online (Sandbox Code Playgroud)
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");
}
%>
Run Code Online (Sandbox Code Playgroud)
tak*_*shi 12
以下代码编译变量convert中的代码.它会自动检测输入的类的名称.如果未找到任何类,则会创建一个类名为MyClass的模板.
String convert = "public class NewClass { public static void main(String[] args) { System.out.println(\"test\"); }}";
String filename = "MyClass.java";
int i = convert.indexOf(" class ");
if(i == -1) {
convert = "public class MyClass { " + convert + " } ";
} else {
int classNameIndex = convert.indexOf(" ", i+1);
int classNameIndexEnd = convert.indexOf(" ", classNameIndex+1);
filename = convert.substring(classNameIndex+1, classNameIndexEnd) + ".java";
}
PrintWriter wr = response.getWriter();
File f = new File(filename);
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, filename);
if (result == 0) {
wr.println("Compilation Successful");
} else {
wr.println("Compilation Failed");
}
Run Code Online (Sandbox Code Playgroud)