【发布时间】:2023-03-22 04:31:01
【问题描述】:
好吧,我被难住了。我正在使用具有 1.7.0_11 的 Java RTE 的 Matlab 版本 2013b,我正在尝试运行一段简单的代码来查看 Matlab 是否能够读取 .jar 文件并且似乎没有任何工作。
这里是Java代码,编译成一个名为JavaOCT.jar的.jar,放在Matlab工作目录下:
package VTK;
public class vtkVolumeView{
public int Test(){
return 10;
}
}
就是这样,没有其他依赖,没什么花哨的。在 Matlab 中,我尝试:
javaaddpath('\JavaOCT.jar'); %<-Directory and name are 100% correct
import VTK.*; %<-Package name from above
methodsview VTK.vtkVolumeView; %<-Can't find the class, argh!
Matlab 回击说它找不到类。
我为尝试解决问题所做的事情:
- 恢复到与 Matlab RTE 完全相同的 JDK
- 尝试了较旧的 1.6 JDK
- 做了大量的堆栈溢出研究来尝试解决它1234
- 尝试使用
javaclasspath并改为指向已编译的类 - 阅读 Matlab 文档5
- 在
javaaddpath之后使用clear -java
任何帮助将不胜感激,这让我发疯了!
更新:Daniel R 仅建议 javaaddpath('JavaOCT.jar') 也不起作用。
最终更新:终于成功了!我没有正确构建 .jar。在 IntelliJ 中,单击项目并按 F4。这将打开项目结构,然后转到 Artifacts 并单击绿色 + 按钮并添加 DirectoryContent,然后指向 out\production。一旦完成,正如其他人所提到的,它应该在 Matlab 中显示为可扩展的 .jar。
【问题讨论】:
-
您需要添加完整路径,并且它不应该在 MATLAB 的目录中。
-
是,
javaclasspath显示了确切的位置,包括使用 Daniel R 的方法或上述原始方法的 JavaOCT.jar 文件的 .jar 扩展名。当为javaaddpath提供错误路径时,不会出现警告错误 -
你能发布 javaclasspath 的输出,只是与
等相关的行吗? -
jar文件的目录结构是什么? (您可以像 matlab“资源管理器”中的目录一样简单地扩展它)。您是使用
javac还是使用 IDE(例如 Eclipse)自己构建的?参见例如stackoverflow.com/q/9974882/2319400 应该是什么样子。 -
谢谢!我正在使用 IntelliJ 构建 .jar 并且没有正确执行。在 IntelliJ 中,必须手动将输出目录添加到 .jar。正确构建 .jar 后,使用上述方法即可。如果你回答,我会接受。