2012-01-26 80 views
0

我试图让使用ASP.NET C#Java编译器ASP.NET

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,但过程不会被允许对Java的编译器在线ASP.NET编写Hello.class磁盘

但在做手工通过CMD.EXE,而不使用ASP.NET或progmatically使用C#只有它运行完美

你能帮我使用进行在线Java编译器用于编译算法分配的ASP.NET或PHP?

回答

3

这是一个权限问题 - 你有两个选择:

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

你应该配置为ASPNET用户的访问权限,这取决于哪个IIS和Windows Server中运行Web应用程序的版本修改了一下。

考虑到服务器的磁盘上本地存储在一个适当的位置输出数据,而不是直接C或任何系统文件夹。让我们说C:\JavaOutput\然后给读/写权限ASPNET用户到该文件夹​​。

0

这是一个权限问题。您需要为ASP.NET USER \ IISUSER允许对c:\的完全权限。这显然是一个错误的方法。

你的工作目录应该是一个Web应用程序位于该目录。

0

的磁盘上没有编译器尝试存储Hello.class?很可能,它位于ASP.NET进程无权写入的文件夹中。

一些提示:

1)找出权限ASP.NET辅助进程了。如果使用IIS,请检查它正在运行的ApplicationPool的身份。有机会在有限的配置下运行。

2)找到ASP.NET工作进程可以写入的文件夹。这应该可能位于应用程序根目录(〜)下的目录中,或者位于某个TEMP文件夹中。

3)检查javac命令行是否允许你指定一个显式的输出目录。如果没有,请使用p.StartInfo.WorkingDirectory为进程指定一个工作文件夹,这可能会将javac输出到指定的文件夹。