在C#dot net应用程序中执行jar文件

时间:2009-10-24 09:38:54

标签: c# java console

  1. 我想从C#.net应用程序中执行一个jar文件.jar文件是一个控制台应用程序。 jar文件与C#应用程序位于同一目录中。 2.我想检查是否在C#.net applcation中安装了jdk 我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

c#方法

Process::Start(program, argumentString)

可用于启动任意应用程序,因此如果您知道从命令行启动Java应用程序的命令,则可以推断出Process:Start()的参数。

Java命令将是

java -jar <jarfile> {and maybe <mainClass>}

所以这里的问题是

  1. 是java可用的,它在你的路径上吗?
  2. jarfile的路径是什么
  3. 实现main的jar文件中类的名称是什么?如果传递jar文件的人友好,那么JAR的manifest指定主类的名称,因此您不需要该参数。否则,我们希望它在某处记录。
  4. 如果已经很好地安装了Java,那么它应该已经在你的PATH上了。从命令行尝试它。我认为预先安装java是合理的,所以在你的c#app我只是假设Java可用并尝试启动它,然后用以下代码捕获任何失败:

      catch (Win32Exception e)
                {
                    if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
                    {
                        Console.WriteLine(e.Message + ". Check the path.");
                    } 
    

    等。

答案 1 :(得分:1)

包含批处理文件,其中包含启动Java应用程序所需的任何内容。

E.g。 “javaw -classpath path-of-jar”

System.Diagnostics.Process.Start("batchfile");

更多here

对于问题2, elder_george的建议应该有效。

如果java / bin文件夹位于环境路径中,您可以尝试:

System.Diagnostics.Process.Start("java.exe", "-version");

如果没有异常,您可能有一个有效的java.exe文件。

答案 2 :(得分:0)

  • 使用Process启动java流程传递参数-jar yourjar.jar

  • JDK通常安装在c:\Program Files\Java\jdk...中。检查此文件夹是否存在,它应该适合大多数情况。或者在注册表中查看HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit