Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .jar从C程序启动时不会运行_C#_Java - Fatal编程技术网

C# .jar从C程序启动时不会运行

C# .jar从C程序启动时不会运行,c#,java,C#,Java,我正在用C为Kinect开发一些程序。在模拟击键或鼠标移动方面,C没有Java的Robot那么好,所以我使用Java。目前,我正在创建.jar文件,并试图从C应用程序中运行它们,尽管我怀疑有更好的方法。我这样做的方式是将这一行放在我的C代码中: System.Diagnostics.Process.Start("CMD.exe", java -jar C:\\Users\\Me\\RobotProgram.jar"); 这在一个小型的基本C应用程序中运行良好: using System; us

我正在用C为Kinect开发一些程序。在模拟击键或鼠标移动方面,C没有Java的Robot那么好,所以我使用Java。目前,我正在创建.jar文件,并试图从C应用程序中运行它们,尽管我怀疑有更好的方法。我这样做的方式是将这一行放在我的C代码中:

System.Diagnostics.Process.Start("CMD.exe", java -jar C:\\Users\\Me\\RobotProgram.jar");
这在一个小型的基本C应用程序中运行良好:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
           System.Diagnostics.Process.Start("CMD.exe", "/c java -jar C:\\Users\\Me\\RobotProgram.jar");
        }
    }
}

但是当它在一个更复杂的程序中使用Kinect相机时,它将无法工作。控制台会闪烁,说明在初始化VM java/lang/NoClassDefFoundError:java/lang/Object时出错。

java项目可能正在工作目录中查找所需的文件。在启动之前,请尝试设置工作目录

Directory.SetCurrentDirectory("C:\\Users\\Me");
System.Diagnostics.Process.Start("CMD.exe", "/c java -jar C:\\Users\\Me\\RobotProgram.jar");

您可能需要指定应用程序的入口点


这里有一个简单的解释:

您是否在运行复杂程序的环境中正确设置了JAVA_HOME环境变量


错误指向一个空的/错误的JAVA_HOME,因为即使基类也找不到

看起来JAVA标准库没有正确加载。尝试将其添加到Java解释器开关中。对不起,当您说将其添加到Java解释器开关中是什么意思?加上什么?他说它在更小的环境中工作,所以这似乎不是问题,我不确定这意味着什么。我的标准Java环境变量设置正确,但我不确定我是否理解您所说的“在复杂程序运行的环境中”设置。我应该怎么做才能检查这一点?您可以从应用程序中执行echo%JAVA_HOME%>之类的命令,其中是一个文件路径,您可以在其中捕获echo命令的输出->是一个重定向操作符,获取标准输出并将其重定向到一个文件,就像使用JAVA命令一样。然后将该文件的内容与您希望看到的环境变量JAVA_HOMESorry的值进行比较。如果我速度慢,我尝试了,它只是将%JAVA_HOME%打印到文本文件中。这意味着该变量未设置。请从命令行尝试:echo%PATH%和echo%A%,并查看行为的差异-假设为env。变量A未设置您需要确保在该环境中设置了变量,然后它应该像在更简单的示例中一样工作。我现在唯一不知道怎么做的就是找出C程序运行在哪个环境中——这不仅仅是更改目录的问题,因为如果我手动将目录更改为通常在C程序生成的命令提示符下工作的目录,它仍然给出相同的错误。VM正在查找的文件是基本类,例如java.lang.Object,请参阅错误消息-更改为工作目录不会解决问题