我正在使用C#Application调用批处理文件,该文件编译并运行java程序。 (这是一个抓取网站内容的刮刀项目。)批处理文件包含以下命令:
java -classpath core.jar;mysql.jar;realtouch.jar; com.parser.MainClass C:/wamp/www/C21_real2/properties http://www.realestate.com.au/realestate/agent/century+21+harbourside+neutral+bay/tzrjnd
这个批处理文件工作正常,当我转到文件夹并双击批处理文件。但是当我使用System.Diagnostics.Process
通过我的应用程序调用此运行文件时,它说:
无法找到主类com.parser.MainClass。程序现在将退出。
命令窗口将在几秒钟内退出。
我从C#调用程序如下:
Process batch = new Process();
string pathtoRunFile="E:\\newFiles\\run.bat";
batch.StartInfo.FileName = PathtoRunFile;
batch.StartInfo.Arguments = "";
batch.StartInfo.UseShellExecute = true;
batch.Start();
batch.WaitForExit();
请有人尽快帮助我。当我从我的应用程序中调用它时,我真的很困惑为什么这不起作用。我不是一个Java开发人员。这是我的主要Java程序的问题吗?如果是这样怎么解决?我需要的是从我的C#应用程序运行批处理文件。
newfiles
文件夹的结构如下:(仅包含文件)
答案 0 :(得分:9)
设置工作目录:
batch.StartInfo.WorkingDirectory = "E:\\newFiles";
答案 1 :(得分:2)
它可能是一个路径问题 - 调用程序在目录树中的位置与当前目录和批处理文件的位置之间存在差异。
要测试,打开一个命令提示符,确保你在e:\ newFiles中不并运行e:\ newFiles \ run.bat - 我希望它在同一个方法中失败方式。
要解决此问题,您需要a)添加“com.parser.MainClass”的路径或b)在C#应用程序中设置当前目录。
答案 2 :(得分:0)
您可能需要将 newFiles 文件夹设为当前目录,以便java vm可以找到您的文件。尝试将其添加到批处理文件中:
E:
cd E:\newFiles\