簡體   English   中英

java.library.path,classpath Netbeans 8.0.2

[英]java.library.path, classpath Netbeans 8.0.2

我剛安裝了Matlab Runtime:

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

你可以找到Matlab的運行時間在這里 ,我在安裝R2015b的情況下(9.0)*(MATLAB運行9.0,對於R2015b,旨在用MATLAB 8.6,這也是R2015b工作)。

Matlab庫安裝到:/ 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) 

我從程序中得到的錯誤如下:

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社區版,根本沒有mods,代碼運行沒有任何問題。 我真的希望與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

java.library.path是java用於查找本機庫的路徑。如果出現錯誤,則會導致錯誤

  • 路徑中沒有名為libmwmclmcrrt.so的文件
  • 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

如果已存在於該路徑中,您可以檢查文件權限..

在大多數情況下,錯誤是由於找不到庫而引起的。

在netbeans中設置java.library.path。 選擇項目,右鍵單擊“ Properties 選擇Run選項,“更改VM options以添加本機庫-Djava.library.path="absolute\\path\\to\\your\\library\\files"

java.library.path選項

在此之后,您需要通過`System.load(“absolute \\ path \\ to \\ your \\ library \\ files”);''加載庫。 在靜態塊中。

像這樣

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);
  }
}

還修改LD_LIBRARY_PATH環境變量以包含matlab庫所在的路徑。

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

我想我們在這里有更好的解釋。

簡而言之:

  • 某些系統屬性僅在JVM啟動時讀取一次,因此在啟動后更改它不會使JVM再次加載它,因此System.setProperty()將無法工作。
  • 特別是, java.library.path是只讀的。

因此,設置它的唯一方法是在Windows中設置%PATH% ,或在類Linux系統中設置$LD_LIBRARY_PATH

要在Linux中設置系統范圍,請編輯/etc/environment 如果您只想在用戶范圍內進行設置,請查看這篇非常實用的文章

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

另外:如果您不知道,在這種情況下, locate libmwmclmcrrt.so.9.0總是非常有用,特別是當您在不同位置使用相同名稱的文件的各種版本時。 /your/path/to/add是一個目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM