Sto costruendo un'applicazione Java che utilizza una libreria condivisa scritta in C++ e compilata per diversi sistemi operativi. Il problema è che questa stessa libreria condivisa dipende da una libreria aggiuntiva che normalmente trova nella variabile d'ambiente appropriata (PATH, LIBRARY_PATH o LD_LIBRARY_PATH).Carica libreria condivisa per percorso al runtime
Posso - ma non voglio - impostare queste variabili di ambiente. Preferisco caricare le necessarie librerie condivise da un determinato percorso in fase di esecuzione, proprio come un plugin. E no - non voglio nessuna applicazione di avviamento che avvia un nuovo processo con un nuovo ambiente. Qualcuno sa come ottenere questo?
So che questo deve essere possibile, in quanto una delle librerie che uso è in grado di caricare i suoi plugin da un determinato percorso. Ovviamente preferirei codice indipendente dalla piattaforma, ma se ciò non fosse possibile, anche le soluzioni separate per Windows, Linux e MacOS lo farebbero.
EDIT Avrei detto che la libreria condivisa che avrei voluto usare è orientato agli oggetti, il che significa che un legame di singole funzioni non lo farà.
Come si carica la libreria da Java? –
Java Native Access (JNA) – aRestless