繁体   English   中英

Java编译器ASP.NET

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM