2009-07-06 14 views
12

Sto cercando una libreria Java per l'interfaccia con le funzioni standard di Unix, ad esempio stat(), getpwuid(), readlink().Esiste una libreria Java di funzioni Unix?

Questo esisteva e veniva chiamato javaunix. È stato rilasciato nel 2000. Vedi questo announcement. Ma la pagina del progetto ora è andata.

C'è qualche sostituzione moderna per questi tipi di funzioni in Java oggi? Si potrebbe effettuare una chiamata di sistema a /bin/ls -l e analizzare l'output, o scrivere un metodo JNI personalizzato, ma questi approcci sono più utili della semplice libreria .

Chiarimento - Per scoprire il proprietario di un file da un programma C, si dovrebbe chiamare stat() che dà l'UID del proprietario, e quindi utilizzare getpwuid() per ottenere il nome del conto dal UID. In Java questo può essere fatto tramite un metodo JNI personalizzato o la libreria javaunix che utilizza JNI.

risposta

16

Sono a conoscenza di due progetti interessanti:

Personalmente mi piace molto JNA. Date un'occhiata a questo esempio di mio, mappatura 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

Non conosco nessuna libreria con le funzioni Unix.

per la maggior parte delle funzioni, credo, è possibile utilizzare l'API Java standard per fare ciò che si desidera. ad esempio, non è necessario utilizzare il comando ls per leggere i file di alcune directory. ma in alcuni casi specifici, come stat (per scoprire se un file è un collegamento) devi usare JNI.

-2

Sarei sorpreso di vederne uno, considerando che sarebbe quasi necessariamente specifico per la piattaforma. Java non è lo strumento migliore per quel lavoro. Ma potresti sicuramente collegarti tramite JNI o ​​chiamare programmi esterni se insisti. O forse guardare in Groovy, che capisco è abbastanza buono per lo scripting di shell, anche se non ho esperienza personale con esso.

3

JNA-POSIX è stagnante attualmente, per quanto ne so.

Gli sviluppatori hanno continuato a creare JNR-POSIX

Problemi correlati