在MATLAB

时间:2015-11-24 17:59:19

标签: java matlab

我正在研究一个项目,我希望在Matlab中调用java程序。 java程序的示例结构如下:

                 mainproj
                /    |   \
               src   lib  bin
               / \        / \ 
              a    b     ac   bd

Folder" lib"包含jar文件。文件夹ac和bd都有.class的java。文件夹a和b具有java文件+一些其他类文件。我希望运行一个名为" launcher.java"的java文件。在文件夹a下,它使用jar文件并调用文件夹b中可用的java程序,文件夹中包含launcher.class文件。

我很困惑如何成功调用此程序。我在网上找到了一些解决方案,但它们对我不起作用。 Calling Java from MATLAB?Calling Java from MATLABIs it worth to call java from matlab?Calling Java from Matlab is very slow

launcher.java文件如下:

package ac;
import....
public class launcher
{
....
....
public static void main(String[] args) { run();}
public static void run() {......}
}

我的表现如下:

javaaddpath('mainproj\lib\x.jar')
javaaddpath('mainproj\bin\ac')
import mainproj.*;
import mainproj.lib.*;
import mainproj.bin.*;
import mainproj.bin.ac.*;
import mainproj.bin.bd.*;

l = launcher;
javaMethod('main', l);

[我想在文件夹中调用launcher.class的main,因为它自动调用run()方法,而run()调用文件夹bd中的其他类文件

我得到的输出错误是:No class launcher can be located or no methods for class

感谢任何建议/帮助。

1 个答案:

答案 0 :(得分:0)

如果您提供细节,而不仅仅声称它在Eclipse中有效,那将非常有用。显然,某些在Eclipse设置和Matlab代码之间是不同的,但如果你不共享你的工作设置,我们只能猜出你的Matlab设置有什么问题。

以下是我的猜测;如果是错误的,请包含用于构建和运行Java代码的 exact 命令。如果您不能通过命令行执行此操作,请包含完全 Eclipse构建路径和运行配置。

您正在将mainproj\bin\ac添加到Java类路径中。这告诉Java将mainproj\bin\ac视为类文件的根目录。由于您尝试启动类ac.launcher,因此launcher.class包目录里面的<{1}}文件添加到Java类路径中的目录。

换句话说,如果你的ac命令看起来像这样:

java

Java将查找java -cp mainproj\bin\ac ac.launcher 文件。

您的mainproj\bin\ac\ac\launcher.class文件更有可能位于launcher.class(因为mainproj\bin\ac是包),因此ac应该是添加到Java类路径的目录,所以命令看起来像这样:

mainproj\bin

这将加载java -cp mainproj\bin ac.launcher 文件。

tl; dr 尝试将mainproj\bin\ac\launcher.class替换为javaaddpath('mainproj\bin\ac')并阅读how the Java class path works