【问题标题】:DDE interface for OctaveOctave 的 DDE 接口
【发布时间】:2016-06-08 14:32:13
【问题描述】:

我在 Windows 7 上使用 Octave 4.0.1(GUI 版本)并尝试与 DDE 服务器通信。我正在使用与此问题Matlab and JDDE 的答案相同的方法。这是我到目前为止所做的:

  1. 下载并解压JDDE包到C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3
  2. 在我的 `prefdir 中创建了文件 javaclasspath.txtjavalibrarypath.txt
  3. 已将C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar 添加到javaclasspath.txt
  4. C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3 添加到javalibrarypath.txt

另外,我还运行了以下命令:

javaaddpath('C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3')

我已重新启动 Octave 并尝试了以下操作:

>> javaaddpath('C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar')
>> javaclasspath
   STATIC JAVA PATH

      C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar

   DYNAMIC JAVA PATH

      C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar

>>  a = javaObject('com.pretty_tools.dde.client.DDEClientConversation')

error: [java] java.lang.UnsatisfiedLinkError: no JavaDDE in java.library.path
>>  a = javaObject('com.pretty_tools.dde.client.DDEClientConversation')

error: [java] java.lang.NoClassDefFoundError: Could not initialize class com.pretty_tools.dde.client.DDEClientConversation

java类的描述可以在here找到。

我做错了什么?错误消息是与 java 类/包相关还是存在更根本的问题?从 Octave 连接到 DDE 服务器是否有更好的接口?我应该补充一点,虽然我精通 MATLAB/Octave,但我对 java 或 DDE 一无所知。

【问题讨论】:

  • 你叫错了javaObject,类名不包括()
  • @carandraug 感谢您的评论,我现在收到不同的错误消息,将相应地更新问题。
  • 我设法通过将 C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3 添加到我的 PATH 环境变量来修复它。我认为即使它们位于同一目录中,java 类也找不到 DLL,因为该目录不在 PATH 上。

标签: java octave dde


【解决方案1】:

好吧,在互联网上搜索了很多之后,我已经设法解决了这个问题,所以我会回答我自己的问题。

java 错误消息Could not initialize class... 似乎通常表明 JAR 不在类路径中(我知道这里不是这种情况)或者即使存在类定义也找不到在编译时(参见例如"NoClassDefFoundError: Could not initialize class" error)。

查看JAR类的目录,我看到还有两个DLL文件作为包的一部分,所以我开始预感JAR文件中定义的java类找不到DLL文件,即使它们在同一个目录中。

在 MATLAB 中,有一个名为 librarypath.txt 的东西,我们可以在其中引用包含必要 DLL 的目录(例如参见 this question)。 Octave 中似乎没有这样的选项(至少我找不到)。

所以(解决方案来了),我尝试将包含 JAR 和 DLL 文件 (C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\) 的目录添加到 Windows 的 PATH 环境变量中,瞧!突然,我能够运行代码而没有任何错误!

注意:对于像我这样的 java 新手,不需要使用 javaaddpath 将目录添加到动态 java 路径,因为它已经存在于静态 java 中通过javaclasspath.txt 的路径。不同之处在于,每次启动 Octave 时都会默认加载静态路径,而 javaaddpath 仅将目录临时添加到路径中(例如,仅当一个脚本或函数需要它时)。请参阅How to make Java classes available to Octave 以获得更好和更详细的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多