我正在尝试通过VB项目使用Apache Ant运行Python应用程序word2html
。可执行的以下代码。
//in loop
If (Not ExecuteProgram("ant", "word2html", True)) Then
Throw New System.Exception("couldn't run word2html")
End If
//executeprogram function
Public Function ExecuteProgram(ByVal ExeLoc As String, ByVal ExeArgs As String, ByVal bSynch As Boolean) As Boolean
'The exefile location is passed in along with a boolean value of whether to
'execute the file syncronously or asynchronously
Try
Dim MyInstance As New System.Diagnostics.Process
Dim si As New ProcessStartInfo(ExeLoc, ExeArgs)
MyInstance.StartInfo = si
MyInstance.Start()
If bSynch Then
'run synch
MyInstance.WaitForExit()
End If
Return True
Catch ex As Exception
MsgBox(ex.ToString)
Return False
End Try
End Function
几周前,代码成功运行,但现在由于以下错误消息而失败:
system.com.ponentmodel.win32 exception(0x80004005):系统找不到指定的文件
在system.diagnostics.process.startwithshellexecuteex(processStartinfo startInfo)
在consoleapplication1.hello.executeprogram(字符串exeloc,string exeargs,boolean bsynch)
in C: users shwang desktop svn trunk data data data_loading scripts data_sheet _scripts Pipeline ProcessDataSheetPipeline Module1.vb:行349
当我从cmd
窗口运行ant word2html
时,它将成功运行。
我怀疑是我的工作环境正在改变,我检查了ANT_HOME
和JAVA_HOME
变量正确,并包含在PATH
环境变量中。我还应该检查其他哪些依赖项?我目前正在使用Microsoft VB 2010 Express作为我的IDE。
ant
实际上是批处理脚本,而不是可执行文件。这就是为什么错误消息是"系统找不到指定的文件"。Windows找不到名为ant
的可执行文件。
您可以将cmd.exe
与其/c
选项一起运行批处理脚本:
If (Not ExecuteProgram("cmd.exe", "/c ant word2html", True)) Then