Java Compiler ASP.NET
本文关键字:NET ASP Compiler Java | 更新日期: 2023-09-27 18:21:33
我正在尝试使用ASP.NET C#为java制作一个在线编译器
Process p=new Process();
p.StartInfo.FileName = "C:''Program files''Java''bin''javac.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = "C:''Hello.java";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardOutput.ReadToEnd();
p.WaitForExit();
我运行javac.exe来编译Hello.java,但ASP.NET不允许这个过程将Hello.class写入磁盘
但是,在不使用ASP.NET或仅使用C#的情况下通过cmd.exe手动执行时,它可以完美地运行
你能帮我做一个使用ASP.NET或PHP的在线java编译器来编译算法赋值吗?
这是一个权限问题-您有两个选项:
- 将应用程序池标识更改为具有写入权限的帐户
- 为当前应用程序池标识帐户授予写入权限
您应该为ASPNET用户配置访问权限,这会根据web应用程序运行的IIS和Windows Server版本而有所变化。
考虑将输出数据本地存储在服务器磁盘上的适当位置,而不是直接存储在C
或任何系统文件夹中。假设C:'JavaOutput'
然后向ASPNET用户授予对该文件夹的读/写权限。
这是一个权限问题。您需要为ASP.NET USER''ISUSER允许c:''的完全权限。这显然是错误的做法。
您的工作目录应该是web应用程序所在的目录。
编译器试图在磁盘上的何处存储Hello.class?很可能,它位于ASP.NET进程没有写入权限的文件夹中。
一些提示:
1) 了解ASP.NET工作进程具有哪些权限。如果使用IIS,请检查其运行的ApplicationPool的标识。它很可能是在有限的个人资料下运行的。
2) 查找ASP.NET工作进程可以写入的文件夹。该文件夹可能位于应用程序根目录(~)下的目录中,或者位于某个TEMP文件夹中。
3) 检查javac命令行是否允许您指定显式输出目录。如果没有,请使用p.StartInfo.WorkingDirectory为进程指定一个工作文件夹,这可能会使javac输出到指定的文件夹。