簡體   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