使用 matlab 中的 java 类时主文件夹发生变化

发布于 2024-11-04 08:27:13 字数 846 浏览 2 评论 0原文

我正在用 matlab ui 编写一个 java 应用程序。为此,我在 matlab 中使用 java 对象,如下所述: http://www.mathworks .com/help/techdoc/matlab_external/f4873.html

这些 java 类引用(使用相对路径)父映射中其他文件夹中的资源。在 Eclipse 或作为可执行 jar 中,这一切都工作正常。

问题是,当在 matlab 中使用类时,主文件夹会发生变化。因此,它不是在 JAR/resources 或 PROJECTMAP/resources 中查找,而是在 MATLAB/resources 中查找资源并返回文件未找到异常。

我目前的解决方法有点蹩脚: 我只是将资源文件夹的副本放在 MATLAB 目录中,以便执行代码。 但这是一个糟糕的解决方案。

我想要的是

1:将资源文件夹包含在jar中(在eclipse中生成),并且可以在matlab中使用这些类(简而言之:独立当前目录)

2:能够从 eclipse 运行相同的代码(以调试/配置文件...)。

3:只要将 jar 添加到 matlab 类路径中,代码就应该独立于 jar 所在的位置执行。 (因此 jar 不必位于特定文件夹中(例如 MATLAB 文件夹))

所以我“简单”需要一种方法来指定资源文件夹的位置在我的代码中以实现 1, 2,3(1,2 最重要)。

I am writing a java application with a matlab ui. For this I use java objects in matlab as explained here: http://www.mathworks.com/help/techdoc/matlab_external/f4873.html

those java classes reference (using a relative path) to resources in some other folder in the parent map. In eclipse or as an executable jar this all works fine.

The problem is that when classes are used in matlab the homefolder changes. So instead of looking in JAR/resources or PROJECTMAP/resources it looks for the resources in MATLAB/resources and returns a file not found exception.

how I currently solved it is kinda lame:
I simply put a copy of the resource folder in the MATLAB directory which makes the code execute.
Yet this is a poor solution.

What I would want is

1: to include the resource folder in the jar (generated in eclipse) an make it possible to use these classes in matlab (in short: independency current directory)

2: Being able to run the same code from eclipse (to debug/profile...).

3: That the code should execute independantly of the location the jar is in as long as it is added to the matlab classpath. (so the jar does not have to be in a specific folder (eg MATLAB folder))

So I 'simply' need a way to specify the location of the resource folder in my code as to achieve 1,2,3 (1,2 most important).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南风起 2024-11-11 08:27:13

不确定您如何阅读以及如何使用这些资源(因此这可能不是适合您的情况的正确解决方案),但您确实可能希望将这些资源放在您的类路径中。如果将它们放在 Eclipse 中自己的源文件夹中,则可以设置构建以将它们包含在 jar 中。 (Maven 按照惯例,有一个 /src/main/resources 目录,用于将任意文件粘贴到编译后的 jar 中) 。

将这些资源放在类路径中...然后您可以使用类加载器通过 getClass() 加载文件。getResourceAsStream() 或 getResource() 并使用它运行。

Not sure how you're reading and what you're doing with these resources (so this might not be the correct solution for your case), but you indeed might want to put these on your classpath. If you put them in their own source folder in eclipse you can setup your build to include them in your jar. (Maven by convention has a /src/main/resources directory that is for sticking arbitrary files into a the compiled jar).

With these resources on the classpath... You can then use the classloader to load files through getClass().getResourceAsStream() or getResource() and run with it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文