【问题标题】:Matlab doesn't see .jar fileMatlab 看不到 .jar 文件
【发布时间】: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 回击说它找不到类。

我为尝试解决问题所做的事情:

  1. 恢复到与 Matlab RTE 完全相同的 JDK
  2. 尝试了较旧的 1.6 JDK
  3. 做了大量的堆栈溢出研究来尝试解决它1234
  4. 尝试使用 javaclasspath 并改为指向已编译的类
  5. 阅读 Matlab 文档5
  6. 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 后,使用上述方法即可。如果你回答,我会接受。

标签: java matlab jar


【解决方案1】:

我不知道您使用的是哪个操作系统,但./ 似乎无效。

试试javaaddpath('JavaOCT.jar');javaaddpath(fullfile(pwd,'JavaOCT.jar'));

exist(fullfile(pwd,'JavaOCT.jar')) 返回什么?

【讨论】:

  • 嘿,Daniel,我很抱歉,它只是 '\JavaOCT.jar',问题已被编辑以显示这一点。
  • Afaik, \JavaOCT.jar 是 matlab 支持的所有操作系统的 absolute 路径。删除`\`
  • 我不知道,它没有显示错误,当我输入javaclasspath 时,文件正确显示在DYNAMIC JAVA PATH 中。让我试试,我会更新问题
【解决方案2】:

一些尝试:

  1. 添加类文件。使用包时,需要在包的宿主处添加类文件。例如,如果您的代码在这里:

    \\full\path\to\code\VTK\vtkVolumeView.class
    

    然后使用:

    javaaddpath('\\full\path\to\code')
    
  2. 我仍然怀疑你的 *.jar 路径。添加 jar 文件时通常应该使用绝对路径。尝试添加which('JavaOCT.jar')的结果

  3. 您是如何制作 jar 文件的?它是否包含您的包声明所暗示的适当目录结构?

【讨论】:

  • 至于问题1,zomg有效,方法显示!至于问题 2,它显示了正确的 .jar 文件。问题 3:我刚刚为 .jar 工件使用了默认的 IntelliJ 设置。也许这是 .jar 文件的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 2021-01-30
  • 1970-01-01
  • 2014-11-01
  • 2012-01-19
  • 2021-01-01
  • 2019-03-02
相关资源
最近更新 更多