如何在Java中用matlabcontrol包调用Matlab时隐藏命令窗口?

如何在Java中用matlabcontrol包调用Matlab时隐藏命令窗口?,java,eclipse,matlab,proxy,matlabcontrol,Java,Eclipse,Matlab,Proxy,Matlabcontrol,我使用Java中的matlabcontrol包连接到MatlabR2015A并启动一个选定的脚本。这一切都很好,但每次我运行脚本时,Matlab都会打开一个包含输出的命令窗口。这个输出已经在Eclipse中返回,因此是冗余的 我正在用Matlab创建一个会话,方法如下: public interface IMatLab { MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder() .s

我使用Java中的matlabcontrol包连接到MatlabR2015A并启动一个选定的脚本。这一切都很好,但每次我运行脚本时,Matlab都会打开一个包含输出的命令窗口。这个输出已经在Eclipse中返回,因此是冗余的

我正在用Matlab创建一个会话,方法如下:

public interface IMatLab {

MatlabProxyFactoryOptions options = new MatlabProxyFactoryOptions.Builder()
        .setUsePreviouslyControlledSession(true).setHidden(true)
        .setMatlabLocation(null).build();
MatlabProxyFactory factory = new MatlabProxyFactory(options);

public static String runScript(String pathFunc, int param1, int param2)
        throws MatlabConnectionException, MatlabInvocationException {

    MatlabProxy proxy = factory.getProxy();

    // locating MatLab files
    proxy.setVariable("path", pathFunction);
    proxy.eval("addpath(path)");

    // calling add function in MatLab code
    Object[] obj = proxy.returningFeval("add", 1, param1, param2);
    String outputScript = toString(obj[0]);

    return outputScript;
}
调用Matlab时有没有办法隐藏命令窗口?将“setHidden”设置为false时,将启动整个Matlab会话,而不仅仅是命令窗口


我更喜欢用java本身来实现这一点。如果这不是一个选项,那么在Matlab中更改配置也可以。

据我所知,如果不使用本机代码,就无法做到这一点。原因是:

  • 由于Matlab不支持通过另一个程序发送命令,因此他们没有理由在没有任何形式的I/O功能的情况下实现Matlab

  • Matlab程序不是运行java代码的JVM的一部分,因此您找不到纯java方法来更改它(隐藏它或…)

  • 所以我想唯一的方法就是使用本机OSAPI(使用JNA或…)。方法以及是否可行取决于您的操作系统(在Windows中执行此操作,请参阅)


    顺便说一句,我想你应该小心点,matlabcontrol库并不完美,有时你会失去与Matlab的连接,打开一个新的Matlab。如果用户看不到Matlab窗口,您可能会运行很多Matlab进程,而看不到任何进程。

    据我所知,如果不使用本机代码,就无法做到这一点。原因是:

  • 由于Matlab不支持通过另一个程序发送命令,因此他们没有理由在没有任何形式的I/O功能的情况下实现Matlab

  • Matlab程序不是运行java代码的JVM的一部分,因此您找不到纯java方法来更改它(隐藏它或…)

  • 所以我想唯一的方法就是使用本机OSAPI(使用JNA或…)。方法以及是否可行取决于您的操作系统(在Windows中执行此操作,请参阅)


    顺便说一句,我想你应该小心点,matlabcontrol库并不完美,有时你会失去与Matlab的连接,打开一个新的Matlab。如果用户看不到Matlab窗口,您可能会运行很多Matlab进程,而看不到任何进程。

    请添加一个来重现问题。添加的代码和“setHidden”请添加一个来重现问题。添加的代码和“setHidden”