2011-05-12 179 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。