programing

Eclipse 시작으로 "java.library.path"에 네이티브 라이브러리를 추가하는 방법 (재정의하는 대신)

nasanasas 2020. 9. 8. 08:03
반응형

Eclipse 시작으로 "java.library.path"에 네이티브 라이브러리를 추가하는 방법 (재정의하는 대신)


java.library.path에 추가해야하는 네이티브 라이브러리가 있습니다 . JVM 인수 -Djava.library.path = path ... 원하는대로 경로를 설정할 수 있습니다.

내 문제는 내 다른 라이브러리 (pentaho보고)가 기본 java.library.path (시스템 디렉토리 등 포함)를 기반으로 글꼴을 검색하고 수동 설정이 기본 경로를 재정의한다는 것입니다 ..

그래서 : 그것을 재정의하는 대신 기본 java.library.path에 경로 항목을 추가 할 수 있습니까 (-Djava.library.path로 수행되는 것처럼 보입니다)? (배포에 좋지 않은 기본 경로를 직접 추가하고 싶지 않습니다)

편집 : 누락 된 세부 사항에 대해 죄송합니다. Eclipse로 작업하고 있습니다. (배포는 JNLP로 이루어지며 리소스 아래에서 nativelib 를 사용할 수 있습니다 )


이 문제를 잊었다 ... 사실 이클립스에 물어보고 있었는데, 원래 말하지 않아서 미안해. 그리고 대답은 너무 간단 해 보입니다 (적어도 3.5에서는, 아마도 이전 버전에서도 가능할 것입니다).

자바 실행 구성의 인수 : VM 인수 :

-Djava.library.path="${workspace_loc:project}\lib;${env_var:PATH}"

따옴표를 잊지 말아야합니다. 그렇지 않으면 PATH의 공백에 문제가 있습니다.


java.library.pathEclipse에서 개발시 방해하지 않고 기본 라이브러리를 추가하려는 경우 (절대 경로를 포함하고 실행 구성에 매개 변수를 추가 할 필요가 없도록) Java 빌드의 각 Jar에 대한 기본 라이브러리 위치 경로를 제공 할 수 있습니다. 기본 라이브러리 위치 아래의 경로 대화 상자 . 원시 라이브러리 파일 이름은 Jar 파일 이름과 일치해야합니다. 자세한 설명을 참조하십시오 .


SWT는 필요한 네이티브 DLL을 JAR에 넣습니다. 예를 들어 "org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar"를 검색하십시오.

DLL은 JAR의 루트에 있어야하며 JAR은 서명되어야하며 DLL은 META-INF / MANIFEST.MF에 체크섬과 함께 나타나야 VM이이를 선택할 수 있습니다.


Windows에서는 다음과 같습니다.

-Djava.library.path = "C : / MyLibPath; % PATH %"

% PATH %는 이전 -Djava.library.path입니다.


네이티브 라이브러리를로드하기 위해 프로그래밍 방식으로 System.load () 를 호출하여이 문제를 해결할 수 있습니까 ? 이 메서드 ( System.loadLibrary () 와 달리 )를 사용하면 절대 경로를 지정할 수 있습니다.


https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239 는 Eclipse의 런처에 구현 된 대체 메커니즘이 없으며 적어도 Juno 릴리스까지는 없다고 말합니다.

따라서 기본 설정에 대한 사전 지식없이 Eclipse를 시작할 때 java.library.path에 다른 라이브러리 폴더를 추가하거나 앞에 추가하는 것은 (거의) 불가능합니다.

거의 썼습니다. 이클립스를 시작하고, java.library.path의 내용을 덤프하고, 하나의 명령으로 이클립스를 중지 할 수 있어야합니다. 덤프는 구문 분석 된 다음 Eclipse를 시작하기위한 입력으로 사용됩니다.

#!/bin/bash
# get default value of java.library.path (somehow)
default_lib_path=$( start_dump_stop_eclipse_somehow )  

# now launch Eclipse
eclipse --launcher.appendVmargs \
         -vmargs \
         -Djava.library.path="/my/native/lib/folder:${default_lib_path}"

UNIX 시스템에서는 LD_LIBRARY_PATH 환경 변수에 추가 할 수 있습니다. Windows에서 JVM은 자동으로 시스템 특성 java.library.path를 PATH로 설정합니다. 따라서 dll이 PATH에 있으면 설정된 것입니다.


창-> 환경 설정-> Java-> 설치된 JRE. 그런 다음 현재 JRE (JDK)를 선택하고 편집을 클릭합니다. 기본 VM 인수 채우기 : -Djava.library.path = / usr / local / xuggler / lib. 끝난!


위의 의견 중 하나에서 Rob Elsner가 제공 한 솔루션은 완벽하게 작동합니다 (OSX 10.9, Eclipse Kepler). ":"로 구분 된 경로에 추가 경로를 추가해야합니다.

You could also use ${system_property:java.library.path} – Rob Elsner Nov 22 '10 at 23:01


The native library file name has to correspond to the Jar file name. This is very very important. Please make sure that jar name and dll name are same. Also,please see the post from Fabian Steeg My download for jawin was containing different names for dll and jar. It was jawin.jar and jawind.dll, note extra 'd' in dll file name. I simply renamed it to jawin.dll and set it as a native library in eclipse as mentioned in post "http://www.eclipsezone.com/eclipse/forums/t49342.html"


For some reason I couldn't get multiple folders to work (well it did for a while but as soon as I needed more dlls and added more folders, none with white spaces in the path). I then copied all needed dlls to one folder and had that as my java.library.path and it worked. I don't have an explanation - if anyone does, it would be great.


Many of the existing answers assume you want to set this for a particular project, but I needed to set it for Eclipse itself in order to support integrated authentication for the SQL Server JDBC driver.

To do this, I followed these instructions for launching Eclipse from the Java commandline instead of its normal launcher. Then I just modified that script to add my -Djava.library.path argument to the Java commandline.


On Windows, I have found that the important thing is to start Eclipse from the command line rather than from the Start Menu or a shortcut, provided that the native DLL is in a directory in your PATH. Apparently, this ensures that the proper directory is on the path.

참고URL : https://stackoverflow.com/questions/661320/how-to-add-native-library-to-java-library-path-with-eclipse-launch-instead-of

반응형