[英]Java Compiler ASP.NET
我正在尝试使用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的情况下通过cmd.exe手动执行或仅使用C#进行编程时,它运行良好
您能帮我用ASP.NET或PHP制作在线Java编译器来编译算法分配吗?
这是一个权限问题-您有两个选择:
您应该为ASPNET用户配置访问权限,这取决于Web应用程序运行的IIS和Windows Server版本。
考虑将输出数据本地存储在服务器磁盘上的适当位置,而不是直接C
或任何系统文件夹中。 假设C:\\JavaOutput\\
然后将ASPNET用户的读/写权限授予该文件夹。
这是一个权限问题。 您需要为ASP.NET USER \\ IISUSER授予对c:\\的完全权限。 这显然是错误的方法。
您的工作目录应该是Web应用程序所在的目录。
编译器尝试在磁盘上的哪个位置存储Hello.class? 它可能位于ASP.NET进程没有写权限的文件夹中。
一些技巧:
1)找出ASP.NET辅助进程具有哪些权限。 如果使用IIS,请检查正在其下运行的ApplicationPool的身份。 很有可能它的配置文件受到限制。
2)找到一个ASP.NET工作进程可以写入的文件夹。 这可能应该在应用程序根目录(〜)下的目录中,或在TEMP文件夹中。
3)检查javac命令行是否允许您指定显式输出目录。 如果不是,请使用p.StartInfo.WorkingDirectory为该进程指定一个工作文件夹,这可能会将javac输出到指定的文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.