2016-02-12 11 views
14

が、私はちょうど上のMatlabのランタイムをインストールしました:java.library.pathに、クラスパスNetBeansは8.0.2

Distributor ID: Ubuntu 
Description: Ubuntu 15.04 
Release: 15.04 
Codename: vivid 

がインストールR2015b(9.0)*(MATLABランタイムで私の場合、MATLABランタイムhereを見つけることができます9.0、R2015bの場合は、R2015bのMATLAB 8.6で動作するようになっています)。/usr/local/MATLAB

私は、NetBeans 8.0.2に

java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

次のように私のプログラムがあり、私が降りるエラーを使用しています:

Matlabのライブラリ

はにインストールされます

Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the required library libmwmclmcrrt.so.9.0 on java.library.path. 
This library is typically installed along with MATLAB or the MCR. Its absence may indicate an issue with that installation or the current path configuration. 
The MCR version that this component is trying to use is: 9.0. 

Matlabのインストールでは、

On the target computer, append the following to your LD_LIBRARY_PATH environment variable: /usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64: 

私は> [プロパティ]> [VMオプションをプロジェクトにこの行を追加しました:

-Djava.library.path="/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64:" 

を私は使用してプロジェクト]> [プロパティ]> [ライブラリに同じフォルダを追加しました:JAR /フォルダボタンを追加しますが。

私は自分のプログラムに次のコード行を入れている:

System.out.println(System.getProperty("java.library.path")); 

は、私はとして正しく出力を取得するには:

/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64: 

しかし、それは同じエラーで実行に失敗し続け。

私はIntelliJ IDEA Community Editionをインストールしましたが、改造は一切なく、コードは問題なく動作します。私は本当にNetbeansを守りたいと思っており、この問題を理解したいと思っています。何か案は?

IntelliJのは、以下のロードされたがあります

/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 
-Didea.launcher.port=7532 
-Didea.launcher.bin.path=/home/code/idea-IC-143.1821.5/bin 
-Dfile.encoding=UTF-8 
-classpath /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/cldrdata.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/dnsns.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/icedtea-sound.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/localedata.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/nashorn.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunec.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunjce_provider.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunpkcs11.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/zipfs.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jce.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jsse.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/management-agent.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/resources.jar 
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/rt.jar 

:/home/code/NetBeansProjects/CO2model/out/production/TestModelABC 
:/home/code/NetBeansProjects/CO2model/TestModelABC/dist/lib/co2model.jar 
:/home/code/NetBeansProjects/CO2model/TestModelABC/dist/lib/javabuilder.jar 
:/home/code/NetBeansProjects/CO2model/for_redistribution_files_only/co2model.jar 
:/home/code/idea-IC-143.1821.5/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain test.Startup 
. 
: 
:/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64 
:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64 
:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64 
: 
:/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni 
:/lib/x86_64-linux-gnu 
:/usr/lib/x86_64-linux-gnu 
:/usr/lib/jni 
:/lib 
:/usr/lib 
+0

おそらくあなたのNetbeansには、 'LD_LIBRARY_PATH' env変数がありませんか? netbeansを閉じて、export LD_LIBRARY_PATH =/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/ usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/ usr/local/MATLAB/MATLAB_Runtime/v90を実行してください。/sys/os/glnxa64:; netbeans& 'それを再起動します。 – heenenee

+0

'java.library.path'を設定するだけでは不十分です。ネイティブライブラリを直接ロードするときには動作しますが、それらのライブラリが他のネイティブライブラリを参照しているときには失敗します。また、共有ライブラリを見つけるためのOS固有の変数(Windowsでは 'PATH'、Linuxでは' LD_LIBRARY_PATH'、Macでは 'DYLD_LIBRARY_PATH')を設定する必要があります。 – Amro

+0

さらに注意すべき点は、MATLABが使用しているのと同じJavaバージョン(1.8ではなく1.7)を実行時とJDKの両方で使用することです。 MATLABの中で 'version -java'コマンドを実行することで確認できます。 – Amro

答えて

1

java.library.pathは、Javaネイティブライブラリを見つけるために...エラーが

  • libmwmclmcrrtと呼ばれるファイルがない場合起因する使用するパスです。したがって、のパス
  • libmwmclmcrrt.soのアクセス許可は正しくありません

だから私のアドバイスは、ファイルがシステムにあるかどうかを知るために名前libmwmclmcrrt.soで検索を実行することです。.. 見つかった場合は、手動でコピー&ペーストができ、それをこのパス

/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64 

すでにそのパスに存在する場合は、ファイルのアクセス許可をチェックできます。

ほとんどの場合、ライブラリが見つからないためにエラーが発生します。

0

netbeansでjava.library.pathを設定します。プロジェクトを選択し、Propertiesを右クリックします。 Runオプションを選択し、VM optionsを変更してネイティブライブラリ-Djava.library.path="absolute\path\to\your\library\files"を追加します。この後

java.library.path option

は、 `は、System.load( "あなたの\ライブラリ\ファイルを\するために絶対\パス\")を介してライブラリをロードする必要があります;」静的ブロックで。この

static { 
    try { 
    System.load("absolute\path\to\your\library\files"); 
    } catch (UnsatisfiedLinkError e) { 
    System.err.println("Native code library failed to load.\n" + e); 
    System.exit(1); 
    } 
} 

よう

も、MATLABライブラリが置かれているパスが含まれるようにLD_LIBRARY_PATH環境変数を変更します。

export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH 
0

私たちはより良い説明hereを持っていると思います。要するに

  • 一部のシステムプロパティは、JVMは、このように起動した後、それを変更すると、再びJVMの負荷にそれをすることはありません、起動時に一度だけ読んで、そうSystem.setProperty()は動作しません。
  • 特に、java.library.pathは読み取り専用です。

これを設定する唯一の方法は、Windowsの場合は%PATH%、Linuxの場合は$LD_LIBRARY_PATHに設定することです。

Linuxでシステム全体に設定する場合は、/etc/environmentを編集してください。ユーザー単位でのみ設定する場合は、this very practical articleをチェックしてください。

LD_LIBRARY_PATH="/some/preset/path:/your/path/to/add" 

プラス:あなたはそれを知らない場合には、locate libmwmclmcrrt.so.9.0はあなたが同じ名前で別の場所にあるファイルのさまざまなバージョンを有することができる特別なときには、常にこのような状況で非常に便利です。そして/your/path/to/addはディレクトリです。

関連する問題