2011-05-12 239 views
3

我正在C#運行Java批處理文件。如果我通過雙擊執行成功運行它,但如果我從C#代碼運行它,它提供例外線程在c#中執行批處理文件

「例外‘主’線程 java.lang.noclassdeffoundError」 ..

可能是什麼原因以及如何解決?我正在使用的代碼:

var si = new ProcessStartInfo(); 

si.CreateNoWindow = true; 
si.FileName = "batch-file path"; 
si.UseShellExecute = true; 

Process.Start(si); 
+1

我猜測工作目錄可能與Java應用程序相關。 – Heinzi 2011-05-12 13:33:33

回答

1

您很可能缺少一些可能包含在系統環境變量中的參數。這樣

process.StartInfo.WorkingDirectory = "C:\"; 

+1

你能否詳細解釋我錯過了什麼? – mucchar 2011-05-12 13:35:07

+0

我真的不能這樣做,因爲我對你試圖運行的Java程序一無所知。但是這篇其他OS文章可能會幫助你開始:http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java – 2011-05-12 13:41:05

0

嘗試添加以下代碼作爲第一行到您的批處理文件。

@cd /d %~dp0 
0

不要使用batch_process_path +「\」 +而不是使用Path.Combine(),以確保路徑是否正確安裝了斜槓。

而且read this「當UseShellExecute爲真時,WorkingDirectory屬性指定可執行文件的位置」

所以其設置爲false。