2009-07-06 13 views
12

Ich bin auf der Suche nach einer Java-Bibliothek für die Verbindung mit Standard-Unix-Funktionen, d. H. , getpwuid(), readlink().Gibt es eine Java-Bibliothek von Unix-Funktionen?

Diese existierte früher und hieß javaunix. Es wurde im Jahr 2000 veröffentlicht. Siehe hierzu announcement. Aber die Projektseite ist jetzt weg.

Gibt es heute einen modernen Ersatz für diese Arten von Funktionen in Java? Man könnte einen Systemaufruf an /bin/ls -l machen und die Ausgabe analysieren oder eine benutzerdefinierte JNI-Methode schreiben, aber diese Ansätze sind mehr Arbeit als einfach die alte javaunix-Bibliothek zu verwenden.

Klärung - Um eine Datei des Besitzers zu erfahren, aus einem C-Programm, sollte es stat() nennen, die die UID des Eigentümers gibt, und dann getpwuid() verwenden das Konto des Namens aus der UID zu erhalten. In Java kann dies durch eine benutzerdefinierte JNI-Methode oder die javaunix-Bibliothek, die JNI verwendet, erfolgen.

Antwort

16

Ich bin mir dessen bewusst zwei überzeugende Projekte:

Persönlich mag ich sehr gerne JNA. Werfen Sie einen Blick auf dieses Beispiel von mir, Kartierung 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

Ich kenne keine Bibliothek mit den Unix-Funktionen.

für die meisten Funktionen, glaube ich, können Sie die Standard-Java-API zu tun, was Sie wollen. Zum Beispiel ist es nicht notwendig, den Befehl ls zu verwenden, um die Dateien eines Verzeichnisses zu lesen. aber in einigen spezifischen Fällen, wie stat (um herauszufinden, ob eine Datei ein Link ist), müssen Sie JNI verwenden.

-2

Ich wäre überrascht, wenn man bedenkt, dass es fast unbedingt plattformspezifisch sein würde. Java ist nicht das beste Werkzeug für diesen Job. Aber Sie können sich natürlich über JNI anmelden oder externe Programme aufrufen, wenn Sie darauf bestehen. Oder schaue dir vielleicht Groovy an, von dem ich verstehe, dass es ziemlich gut für Shell-Skripting ist, obwohl ich keine persönlichen Erfahrungen damit habe.

3

JNA-POSIX stagniert derzeit, soweit ich weiß. Die Entwickler entwickelten JNR-POSIX