[英]Executing java.exe from C# in Azure Function
I'm trying to execute java to run a JAR file from an Azure function, but it seems like the java PATH variable isn't defined or something because Azure can't seem to find it. 下面的代碼:
Process proc = new Process();
try
{
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = "java.exe";
proc.StartInfo.Arguments = "-jar file path and some more arguments";
proc.Start();
proc.WaitForExit();
if (proc.HasExited)
log.Info(proc.StandardOutput.ReadToEnd());
log.Info("Java Success!");
}
catch (Exception e)
{
log.Info("Java Fail");
log.Info(e.Message);
}
即使我刪除了proc.StartInfo.Arguments
或告訴它使用java.exe
而不是java
我仍然得到相同的錯誤,如下:
[信息] 系統找不到指定的文件
Azure 函數不支持調用 java 嗎?
好想通了。 到目前為止,最好的方法是完全限定java.exe的路徑。
所以我改變了
proc.StartInfo.FileName = java.exe";
至
proc.StartInfo.FileName = "D:\\\\Program Files (x86)\\\\Java\\\\jdk1.8.0_73\\\\bin\\\\java.exe";
您可以使用KUDU找出Java的完整路徑,網址為https:// [yourFunctionName] .scm.azurewebsites.net /
如果單擊“工具”->“調試控制台”,則可以瀏覽直到找到Java所在的位置。
請注意,硬編碼通往Java的路徑可能不是一個好主意,因此您應該使用應用程序設置。
下面的編輯是我的最終項目與GitHub Repo的鏈接。 該項目還有其他功能,但是您可以看到我在哪里調用Java來執行Batik JAR。
https://github.com/osuhomebase/SVG2PNG-AzureFunction
截至 2022 年 9 月,
proc.StartInfo.FileName = java.exe";
對我來說工作得很好。 似乎 Azure Function 環境已安裝 JDK 並且 JAVA PATH 變量集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.