我正在Windows 7上使用Octave 4.0.1 (GUI版本),并试图与DDE服务器对话。我使用的方法与Matlab和JDDE这个问题的答案相同。以下是我迄今所做的工作:
C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3
中javaclasspath.txt
和javalibrarypath.txt
文件。C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar
添加到javaclasspath.txt
中。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类的描述可以找到这里。
我做错了什么?错误消息是否与java类/包相关联,还是存在更基本的问题?从Octave到DDE服务器是否有更好的接口?我应该补充一点,虽然我精通MATLAB/Octave,但我对java或DDE一无所知。
发布于 2016-06-09 21:23:05
嗯,在网上搜索了很多之后,我已经解决了这个问题,所以我会回答我自己的问题。
java错误消息Could not initialize class...
似乎通常表示JAR不在类路径中(我在这里知道情况并非如此),或者即使在编译时存在类定义(例如"NoClassDefFoundError:无法初始化类“错误),也无法找到类定义。
在JAR类的目录中,我发现包中也有两个DLL文件,因此我开始预感到JAR文件中定义的java类即使在同一个目录中也找不到DLL文件。
在MATLAB中,有一种叫做librarypath.txt
的东西,我们可以引用包含必要DLL的目录(例如这个问题)。在“八达通”中似乎没有这样的选择(至少我找不到)。
因此(解决方案来了),我尝试将包含JAR & DLL文件(C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\
)的目录添加到Windows中的PATH环境变量中!突然,我能够运行代码,没有任何错误!
注意:对于像我这样的java新手,不需要使用javaaddpath
将目录添加到动态java路径,因为它已经通过javaclasspath.txt
出现在静态java路径中。不同之处在于,默认情况下,每次启动Octave时都会加载静态路径,而javaaddpath
只是暂时将目录添加到路径中(例如,当只需要一个脚本或函数时)。有关更好和更详细的解释,请参见如何使Java类可用于Octave。
https://stackoverflow.com/questions/37705461
复制相似问题