如何在Linux,Mac和Windows上从Java启动.NET应用程序?

时间:2011-01-19 18:12:03

标签: java .net mono cross-platform

我想从Java环境的上下文启动.NET应用程序(与Mono兼容)。

我的猜测是,我必须以某种方式弄清楚是否安装了mono,找到位置并使用.NET应用程序路径作为参数启动它。

但是这样做的有效方法是什么?或者有更好的方法吗?

也许我应该澄清一下上下文:Java部分在一个可能有限的交互环境中作为插件运行,所以我更愿意找到一种方法,而不需要配置文件或用户界面。

3 个答案:

答案 0 :(得分:1)

如果你已经安装了.net / mono,你可以双击exe文件并运行,那么你可以使用Desktop.open()

一样简单:

Desktop.getDesktop().open(file);

有关详细信息,请参阅此处:Using the Desktop API in Java SE 6 编辑

我必须启动我的Linux机箱,我有一个单声道应用程序,这很有效:

class Launch { 
   public static void main( String ... arg ) { 
      new ProcessBuilder("/usr/bin/myapp").start();
   }
}

重复,工作得很好!

答案 1 :(得分:0)

有趣的问题!答案不是那么直截了当

如果您正在运行Linux

你肯定需要Mono来运行CLR可执行文件

如果您正在运行Windows

你可以通过shell运行CLR可执行文件 OR 使用本地Mono安装(因为Mono也在Windows上运行),但是在Windows上运行Mono的原因很少

所以,我认为你应该先用Java检测操作系统(请不要问我怎么做),然后如果你在运行Linux找到Mono。

Mono的主要可执行文件通常位于/usr/bin,但始终位于$PATH中,因此您可以从控制台运行mono Executable.exe。如果您无法在Java中运行此类命令,或者Mono不在路径中,那么您需要运行whereis mono以获取可执行文件的路径。

没有其他想法。

答案 2 :(得分:0)

我对.Net或Mono一无所知,但我认为,启动.Net应用程序与普通应用程序没什么不同,或者?

用于与环境接口的类是java.lang.Runtime。它还允许您执行命令。 (.exec-方法)

为了构造一个合适的命令,java.lang.System上的各种功能可能会派上用场。

如果此选项不足以满足您特定情况的要求,JNI可能是您唯一的选择......