1

我正在尝试使用 C# 方法将 zip 文件复制到 jar 文件中,如下所示:

ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "java.exe";
start.WorkingDirectory = @"C:\mydir\";
start.Arguments = @" -jar example.jar example.zip";
Process java = new Process();
java.StartInfo = start;
java.Start();

var stdOut = java.StandardOutput.ReadToEnd();
java.WaitForExit();
Console.WriteLine(java.ExitCode.ToString());

问题是我收到此错误:

错误:无法访问 jarfile example.jar

我已经确认 example.jar 和 example.zip 都存在于工作目录中,并且还编写了一个批处理文件,我可以运行并创建一个几乎相同的 .jar 文件:

jar -cf example.jar test.zip

我能够在没有问题的情况下运行此代码:

const string batchFile = @"C:\mydir\batJar.bat";
System.Diagnostics.Process.Start(batchFile);

我的环境变量(Windows 7)也设置正确。

4

2 回答 2

0

您的批处理文件使用可执行文件“jar”,但您的 C# 程序使用可执行文件“java.exe”。

尝试:

start.FileName = "jar";
于 2013-03-20T21:31:46.430 回答
0

Changing lines:

2-FileName

AND

4-Arguments

fixed my problem:

  ProcessStartInfo start = new ProcessStartInfo();
  start.FileName = "jar";
  start.WorkingDirectory =@"C:\myDir";
  start.Arguments = @" cf myJar.jar test.zip";**
  start.UseShellExecute = false;
  start.RedirectStandardInput = true;
  start.RedirectStandardOutput = true;

  Process java = new Process();
  java.StartInfo = start;
  java.Start();

  var stdOut = java.StandardOutput.ReadToEnd();
  java.WaitForExit();
  Console.WriteLine(java.ExitCode.ToString());

Thanks everyone for your help.

于 2013-03-21T15:32:57.340 回答