2012-10-19 3 views
1

여러 플랫폼 (Windows, Linux, Mac) 용으로 빌드 된 외부 C 코드를 하나의 .jar에 모두 패키지화하여이 .jar을 플랫폼에 관계없이 라이브러리로 사용할 수 있도록하고 싶습니다.네이티브 클래스 파일의 여러 세트를 단일 jar에 패키지하는 방법은 무엇입니까?

이렇게하면 단일 외부 라이브러리가있는 컴퓨터에서 컴퓨터로 Java 프로젝트를 전달할 수 있습니다.

JNI를 사용하여 코드를 호출하는 기존 클래스 파일이 있으며 해당 클래스는 플랫폼에 따라 다릅니다. 현재 상태에서, 우리는 그 특정 플랫폼을위한 네이티브 함수를 호출하는 다른 클래스들로 jar를 교체합니다.

Ant/Maven을 사용하거나 추상화 레이어를 만들지 않고 올바른 클래스 파일을 동적으로로드 할 수있는 방법으로 패키지화하는 방법이 있습니까?

답변

0

항아리에 원시 파일을 압축 할 수 없습니다. 그러나 클래스 파일은 일반 클래스 파일과 같을 수 있습니다.

원하는 경우 모든 것을 zip 파일로 압축 할 수 있습니다. 대안으로

올바른 파일을로드하려면 Class.forName()으로 충분합니다. 파일이 클래스 경로에 속하는지 확인하거나 dynamically modify your class path to search from URLs.

+0

기본 파일을 jar 파일로 압축 할 수 있습니다 (현재 수행중인 작업이며 각 플랫폼마다 하나의 jar 파일이 있습니다). 그러나 추상화 레이어를 만들지는 않았습니다. Class.forName()을 사용하는 경우에는 필요합니다. – Lincoded

+0

@Lincoded 당신은 추상화 레이어를 만들고 싶지 않아? 즉, 스텁 Java 클래스를 사용하지 않고 라이브러리에서 함수를 호출하려고합니다. –

+0

네이티브 구현의 함수를 호출하는 기존의 클래스가 있으며, 현재 다른 플랫폼의 jar 클래스 파일을 스왑 아웃합니다. 모든 파일을 하나의 jar 파일로 패키징하고 싶습니다. – Lincoded

관련 문제