2009-07-06 6 views
12

표준 유닉스 기능 (예 : stat(), getpwuid(), readlink())과 인터페이스 할 Java 라이브러리를 찾고 있습니다.유닉스 기능의 자바 라이브러리가 있습니까?

이전에는 존재했지만 javaunix이라고 불렀습니다. 그것은 2000 년에 다시 릴리스되었습니다.이 announcement을 참조하십시오. 그러나 프로젝트 페이지는 이제 사라졌습니다.

Java에서 이러한 유형의 기능을 현대적으로 대체 할 수 있습니까? /bin/ls -l에 시스템 호출을하고 출력을 구문 분석하거나 사용자 정의 JNI 메소드를 작성할 수 있지만 이러한 접근법은 단순히 이전 javaunix 라이브러리를 사용하는 것보다 효과적입니다.

명확한 설명 - C 프로그램에서, 파일의 소유자를 찾기 위해, 그것은 UID에서 계정의 이름을 가져 getpwuid()를 사용 후 소유자의 UID를 제공 stat()를 호출한다. Java에서는 사용자 정의 JNI 메소드 또는 JNI를 사용하는 javaunix 라이브러리를 통해 수행 할 수 있습니다.

답변

16

나는 두 강제적 프로젝트 알고있어 :

[JRuby에서 유래의 (JNI 기준)
  • jna-posix (JNA 기준) [자이로부터 유래]

    개인적으로 나는 매우 좋아한다 JNA. link(2) 매핑, 광산의 예를 살펴 :

    import com.sun.jna.Library; 
    import com.sun.jna.Native; 
    
    class Link { 
    
        private static final C c = 
         (C) Native.loadLibrary("c", C.class); 
    
        private static interface C extends Library { 
    
         /** see man 2 link */ 
         public int link(String oldpath, String newpath); 
        } 
    
        @Override 
        protected void hardLink(String from, String to) { 
         c.link(to, from); 
        } 
    } 
    
  • -3

    유닉스 기능이있는 라이브러리를 모른다.

    대부분의 기능에 대해서는 표준 Java API를 사용하여 원하는대로 할 수 있다고 생각합니다. 예를 들어, 어떤 디렉토리의 파일을 읽으려면 ls 명령을 사용할 필요가 없습니다. 특정 경우에는 stat (파일이 링크인지 확인하기 위해)과 같이 JNI를 사용해야합니다.

    -2

    거의 반드시 플랫폼에 따라 달라지는 것을 고려해 보면 놀랄 것입니다. 자바는 그 직업을위한 최고의 도구가 아닙니다. 그러나 JNI를 통해 확실히 후크 할 수 있거나 주장하는 경우 외부 프로그램을 호출 할 수 있습니다. 또는 Groovy에 대해 살펴 보았습니다. Groovy는 개인적인 경험이 없지만 쉘 스크립팅에 적당하다고 생각합니다.

    3

    JNA - POSIX는 내가 아는 한, 현재 정체입니다.

    개발자가 만들었습니다. JNR-POSIX

    관련 문제