2

まず最初に、このような長い投稿を読んでくださった皆様に、事前に感謝したいと思います。本当にありがとうございました。

問題は、私が大学で取り組んでいるプロジェクトのために、Matlab と Java を「接続」する方法についていくつかの研究を行ってきたことです。最適なオプションは Matlab Builder JA を使用することであると判断しましたが、これには多くの問題があります。

チュートリアル (以下のビデオのリンク) に記載されている手順を順を追って実行しますが、コンパイル エラーが何度も発生し、それらを修正する方法が本当にわかりません。makeSqr(n)このチュートリアルでは、n × n 正方行列を返す関数を含むクラス (MLTestClass) を含む MATLAB ("com.demo") を使用して Java パッケージ (demo.jar) を作成します。次に、Eclipse に移動し、ライブラリ javabuilder.jar と demo.jar の両方をプロジェクトに追加してから、次のクラスを作成します。

public class Driver {

    public static void main (String[] args) {
        MLTestClass x = null;
        Object result [] = null;

        try {
            x = new MLTestClass ();
            result = x.makeSqr (1, 5);
            System.out.println (result [0]);
        } catch (MWException e) {
            e.printStackTrace();
        }

    }

}

もちろん、com.demo.* と com.mathworks.toolbox.javabuilder.* をインポートします。

コンソールに表示されるエラーは次のとおりです。

スレッド「メイン」での例外 java.lang.ExceptionInInitializerError
com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getProxyLibraryDir (MCRConfiguration.java:163) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:77) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.<clinit>(MCRConfiguration.java:87) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:92) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.<clinit>(MCRConfiguration.java:66) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:71) で
    com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(MWMCR.java:1573)
    com.demo.DemoMCRFactory.(DemoMCRFactory.java:122) で
    com.demo.MLTestClass.(MLTestClass.java:63) で
    Driver.main(Driver.java:12) で
原因: java.lang.NullPointerException
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.get(MCRConfiguration.java:143) で
    com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.<clinit>(MCRConfiguration.java:158) で
    ... 10以上

念のため、リンク チュートリアル (ビデオです): http://www.mathworks.nl/products/javabuilder/description2.html

問題が何であるか誰にも考えがありますか? NullPointerExceptionについて何か書いてあるのですが、MATLABで作ったクラスがコンストラクタを提供しているので解決方法がわかりません。MCR のインストールに問題はありませんでした。ちなみに、私は MacOS を持っていますが、それが問題の原因でないことを願っています :)。

繰り返しますが、長い投稿で申し訳ありませんが、お時間をいただきありがとうございます。

ベントール。

4

4 に答える 4

2

はい、MCRをインストールしてください。インストールでは、環境変数の設定LD_LIBRARY_PATHなどについても言及されています。Eclipseを使用している場合は、環境変数を更新することをお勧めします

  • 右クリック→
  • プロパティ ->
  • 実行/デバッグ設定->
  • 環境変数

MCR_CACHE_ROOTまた、ホーム ディレクトリが十分に大きくないため、変数が別のディレクトリを指していることを確認する必要がありました。

于 2012-05-22T17:32:05.010 に答える
1

MCR がインストールされている ( http://www.mathworks.com/products/compiler/mcr/index.htmlで利用可能)

于 2012-05-18T12:13:40.533 に答える
0

ランタイム展開用の OS X パス

これらの setenv コマンドを使用して、MATLAB Runtime パスを設定します。

setenv DYLD_LIBRARY_PATH \
       mcr_root/version/runtime/maci64 \
       mcr_root/version/bin/maci64 \
       mcr_root/version/sys/os/maci64

ソース: http://www.mathworks.com/help/compiler_sdk/java/mcr-path-settings-for-run-time-deployment.html

于 2016-05-13T10:31:35.047 に答える