programing

Eclipse 실행 시 기본 라이브러리를 재정의하지 않고 "java.library.path"에 추가하는 방법

newsource 2022. 9. 19. 23:43

Eclipse 실행 시 기본 라이브러리를 재정의하지 않고 "java.library.path"에 추가하는 방법

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

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

그래서 : 패스 엔트리를 덮어쓰지 않고 기본 java.library.path에 추가할 수 있는 방법은 무엇입니까(-Djava.library.path를 사용하는 것 같습니다.(기본 경로를 수동으로 추가하고 싶지 않습니다.전개에는 적합하지 않습니다.)

편집: 세부사항을 놓쳐서 죄송합니다. 이클립스와 함께 일하고 있습니다.(도입은 JNLP를 사용하여 완료되며 리소스에서 nativelib를 사용할 수 있습니다.)

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

Java 실행 구성의 Arguments : VM 인수:

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

따옴표를 잊지 마십시오.따옴표를 잊지 않으면 PATH의 공간에 문제가 있습니다.

네이티브 라이브러리를 추가하는데 방해받지 않습니다.java.library.pathEclipse에서 개발 시(절대 경로를 포함하고 실행 구성에 매개 변수를 추가할 필요가 없도록) Native 라이브러리 위치 아래Java Build Path 대화상자에서 각 Jar의 네이티브 라이브러리 위치에 대한 경로를 제공할 수 있습니다.네이티브 라이브러리 파일명은 Jar 파일명에 대응해야 합니다.자세한 것은, 이 설명도 참조해 주세요.

SWT는 필요한 네이티브 DLL을 JAR에 넣습니다.org.eclipse.swt를 검색합니다.win32.win32.x86_3.4.1.v3449c.jar"를 예로 들 수 있습니다.

DLL은 JAR의 루트에 있어야 하며 JAR은 서명되어야 하며 DLL은 META-INF/MANIFest에 체크섬과 함께 표시되어야 합니다.VM이 이들을 픽업하기 위한 MF.

Windows 의 경우는, 다음과 같습니다.

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

%PATH% 이름은 ★★★★★★★★★★★★★★★★★★?-Djava.library.path

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

UNIX 시스템에서는 LD_LIBRARY_PATH 환경변수에 추가할 수 있습니다.Windows 에서는, JVM 는 자동적으로 시스템 속성 java.library.path 를 PATH 로 설정합니다.따라서, DLL 가 PATH 에 있는 경우는, 유저가 설정됩니다.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=102239은 Eclipse의 런처에는 대체 메커니즘이 구현되어 있지 않으며, 적어도 Juno를 출시할 때까지는 구현되어 있지 않다고 말합니다.

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

Eclipse 부팅, java.library.path 콘텐츠 덤프, Eclipse 정지 등을 하나의 명령어로 할 수 있도록 거의 작성했습니다.덤프는 해석되어 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}"
  1. Windows 의 경우:라이브러리 경로를 PATH 환경 변수에 추가합니다.
  2. Linux의 경우: 라이브러리의 경로를 LD_LIBRARY_PATH 환경변수에 추가합니다.
  3. Mac의 경우: 라이브러리의 경로를 DYLD_LIBRARY_PATH 환경변수에 추가합니다.

java.library.path는 대응하는 플랫폼에서 위의 변수 값으로 초기화됩니다.

이것은, 모든 IDE 로 동작합니다.

한 값인지 는 콜을 통해 할 수 .java -XshowSettings:properties

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

${system_property:java.library.path} – Rob Elsner 2010년 11월 22일 23:01 에 사용할 수도 있습니다.

  1. Window->Preferences->Java->Installed JREs.
  2. 현재 JRE(JDK)를 선택하고 편집을 클릭합니다.
  3. 인수 : "VM":-Djava.library.path=/usr/local/xuggler/lib.

네이티브 라이브러리 파일명은 Jar 파일명에 대응해야 합니다.이것은 매우 중요합니다.jar 이름과 dll 이름이 동일한지 확인하십시오.또한 Fabian Steeg의 투고를 참조해 주세요.jawin의 다운로드에는 dll과 jar의 다른 이름이 포함되어 있었습니다.jawin.jar 및 jawind.dll 이며, dll 파일 이름에 추가 'd' 를 입력합니다.단순히 jawin.disclaries로 이름을 바꾸고 "http://www.eclipsezone.com/eclipse/forums/t49342.html"에서 언급한 것처럼 이클립스 시 네이티브 라이브러리로 설정했습니다.

어떤 이유로든 여러 폴더를 사용할 수 없었습니다(일시적으로는 가능했지만, dll이 더 필요하고 폴더를 추가하자마자 경로에 공백이 있는 폴더는 없습니다).그런 다음 필요한 모든 dll을 하나의 폴더에 복사하여 java.library.path로 지정하면 동작합니다.저는 설명할 수 없습니다.누군가 설명해주신다면 좋을 것 같습니다.

기존 답변의 대부분은 특정 프로젝트에 대해 이 설정을 원한다고 가정하지만 SQL Server JDBC 드라이버에 대한 통합 인증을 지원하기 위해 Eclipse 자체용으로 설정해야 했습니다.

이를 위해 일반 런처 대신 Java 명령줄에서 이클립스를 실행하는 방법에 대해 설명했습니다.그런 다음 스크립트를 변경하여 Java 명령줄에 -Djava.library.path 인수를 추가합니다.

Windows에서는 네이티브 DLL이 PATH 내의 디렉토리에 있는 경우 시작 메뉴나 바로 가기가 아닌 명령줄에서 이클립스를 시작하는 것이 중요합니다.이것에 의해, 적절한 디렉토리가 패스상에 있는 것이 보증됩니다.

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