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编译器来编译算法赋值吗?

Java Compiler ASP.NET

这是一个权限问题-您有两个选项:

  • 将应用程序池标识更改为具有写入权限的帐户
  • 为当前应用程序池标识帐户授予写入权限

您应该为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输出到指定的文件夹。