使用类路径(cp)在单独的位置执行java控制台应用程序

本文关键字:位置 执行 java 应用程序 控制台 单独 路径 cp | 更新日期: 2023-09-27 18:05:13

我需要在另一个目录中执行一个.jar文件。下面是我尝试执行此任务的代码,

        try
        {
            Process p = new Process();
            p.StartInfo.FileName = @"java cp D:'nfc'nfctools-examples-M9'nfctools-examples-M9'src'main'java'nfctools-examples.jar";//, @"-cp nfctools-examples.jar org.nfctools.examples.hce.HceDemo");
            p.StartInfo.Arguments = @"org.nfctools.examples.hce.HceDemo";
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
            p.Start();
            String s = p.StandardOutput.ReadToEnd();
            p.WaitForExit();
            textBox1.Text = textBox1.Text + "data = " + s;
        }
        catch (Exception ex) {
            MessageBox.Show(ex.ToString());
        }

但是我得到了错误The system cannot find the file specified error。我参照帖子完成了任务,

  • 使用System.Diagnostics.Process
  • 启动Jar文件
  • 从C代码中执行Jar文件并获得返回值
如果你们这些专家能帮助我解决这个错误,我将非常感激。非常感谢:)

编辑

路径org.nfctools.examples.hce.HceDemoD:'nfc'nfctools-examples-M9'nfctools-examples-M9'src'main'java'

文件夹结构为,

D:'
    nfc'
        nfctools-examples-M9'
            nfctools-examples-M9'
                src'
                    main'
                        java'
                            *nfctools-examples.jar
                            |org'
                            |   nfctools'
                            |       examples'
                            |           hce'
                            |               HceDemo.java

*表示需要执行的.jar文件,管道符号表示org.nfctools.examples.hce.HceDemo所示的类路径cp

这个执行是在命令提示符下通过java -cp nfctools-examples.jar org.nfctools.examples.hce.HceDemoD:'nfc'nfctools-examples-M9'nfctools-examples-M9'src'main'java'文件夹中完成的。

我的要求是通过C#执行,并获得jar文件执行到textbox的结果。

使用类路径(cp)在单独的位置执行java控制台应用程序

FileName指定的文件必须存在。不要向这个属性添加任何参数。因此,你必须把你的代码变成这样:

p.StartInfo.FileName = @"java";
p.StartInfo.Arguments = @"cp D:'nfc'nfctools-examples-M9'nfctools-examples-M9'src'main'java'nfctools-examples.jar org.nfctools.examples.hce.HceDemo";