2016-06-08 2 views
1

Windows 7에서 옥타브 4.0.1 (GUI 버전)을 사용 중이며 DDE 서버와 통신하려고합니다. 나는이 질문에 대한 대답과 동일한 방법을 사용하고있다. Matlab and JDDE.옥타브 용 DDE 인터페이스

  1. 다운로드 한을 내`prefdir에서 만든 C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3
  2. 에 파일 javaclasspath.txtjavalibrarypath.txt을 JDDE 패키지의 압축을 푼 다음은 지금까지 한 일이다.
  3. C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\pretty-tools-JDDE-2.0.3.jar ~ javaclasspath.txt이 추가되었습니다. 다음

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

    내가 옥타브를 다시 시작하고 시도 :

    >> 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 
    

    의 설명

  4. 은 또한, 나는 또한 다음 명령을 실행 한 javalibrarypath.txt

C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3 추가 Java 클래스는 here입니다.

내가 뭘 잘못하고 있니? 오류 메시지가 Java 클래스/패키지에 적용 되었습니까? 아니면 근본적인 문제가 있습니까? 옥타브에서 DDE 서버에 인터페이스하는 것이 더 좋습니까? 필자는 MATLAB/Octave에 능숙하기는하지만 자바 나 DDE에 대해서는 아무것도 모른다.

+0

'javaObject'를 잘못 호출하면 클래스 이름에'()'이 포함되지 않습니다. – carandraug

+0

@carandraug 의견을 보내 주셔서 감사합니다. 이제 다른 오류 메시지가 표시됩니다. 그에 따라 질문이 업데이트됩니다. – am304

+0

PATH 환경 변수에'C : \ Octave \ Octave-4.0.1 \ pretty-tools-JDDE-2.0.3'을 추가하여 문제를 해결했습니다. 나는 그 디렉토리가 PATH에 없기 때문에 그들이 같은 디렉토리에 있었음에도 불구하고 자바 클래스가 DLL을 찾을 수 없다고 생각한다. – am304

답변

1

글쎄, 인터넷에서 많이 검색 한 후, 나는 문제를 해결할 수 있었고 그래서 나는 내 자신의 질문에 답할 것이다.

자바 오류 메시지 Could not initialize class...은 일반적으로 JAR이 클래스 경로에없는 것으로 나타 났으며 (여기서는 알 수 없음) 클래스가 존재하더라도 해당 클래스 정의를 찾을 수 없음을 나타냅니다. 컴파일 시간 (예 : "NoClassDefFoundError: Could not initialize class" error 참조).

JAR 클래스의 디렉토리를 보면 패키지의 일부로 두 개의 DLL 파일이 있다는 것을 알았습니다. 그래서 JAR 파일에 정의 된대로 Java 클래스를 찾을 수 없었습니다. DLL 파일은 동일한 디렉토리에 있었지만

MATLAB에는 librarypath.txt이라는 항목이 있으며 여기서 필요한 DLL이 들어있는 디렉토리를 참조 할 수 있습니다 (예 : this question 참조). 옥타브에는 그런 옵션이 없다는 것을 알았을 것입니다.

그래서 (그리고 여기에 솔루션이 제공됩니다.) JSTL & DLL 파일 (C:\Octave\Octave-4.0.1\pretty-tools-JDDE-2.0.3\)이 포함 된 디렉토리를 Windows et voila의 PATH 환경 변수에 추가하려고했습니다! 갑자기 오류없이 코드를 실행할 수있었습니다!

: 초보자있는 분들이 나 같은 자바, 그것은 이미 javaclasspath.txt를 통해 정적 자바 경로에 존재하기 때문에 javaaddpath를 사용하여 동적 자바 경로에 디렉토리를 추가 할 필요가 없습니다. 차이점은 Octave가 시작될 때마다 정적 경로가 기본적으로로드되는 반면 javaaddpath은 경로에 디렉토리를 일시적으로 추가하는 것입니다 (예 : 스크립트 또는 함수 하나에서만 필요함). 보다 자세한 설명은 How to make Java classes available to Octave을 참조하십시오.