Articles of jni

Java: carica le DLL per un percorso relativo e le nasconde all’interno di un barattolo

PARTE 1 Sto sviluppando un’applicazione Java che dovrebbe essere rilasciata come jar. Questo programma dipende dalle librerie esterne C ++ chiamate da JNI. Per caricarli, utilizzo il metodo System.load con un percorso assoluto e questo funziona correttamente. Tuttavia, voglio davvero “nasconderli” all’interno del JAR, quindi ho creato un pacchetto per raccoglierli. Questo mi obbliga a […]

Che cosa deve fare una JVM quando chiama un metodo nativo?

Quali sono i soliti passaggi che il runtime JVM deve eseguire quando si chiama un metodo Java dichiarato native ? In che modo una JVM di HotSpot 1.8.0 implementa una chiamata di funzione JNI? Quali passaggi di verifica sono coinvolti (ad esempio, eccezioni non gestite dopo il ritorno?), Quale contabilità ha la JVM da eseguire […]

Gestire le dipendenze DLL con Maven

Ho un programma Java con Maven che gestisce le sue dipendenze. Una di queste dipendenze è un wrapper JNI per un altro programma. Maven si occupa del riferimento al file JAR pertinente, ma mi viene lasciato il caos con il file DLL. C’è un buon modo per avere Maven anche per gestire la DLL? Idealmente […]

Dovresti chiamare ReleaseStringUTFChar se GetStringUTFChars ha restituito una copia?

Il libro “Essential JNI: Java Native Interface” di Rob Gordon contiene il seguente esempio di codice per convertire una stringa jstring in una stringa C: const char* utf_string; jboolean isCopy; utf_string = env->GetStringUTFChars(str, &isCopy); /* … use string … */ if (isCopy == JNI_TRUE) { env->ReleaseStringUTFChars(str, utf_string); } Si noti che chiama ReleaseStringUTFChars solo se […]

Chiamare il codice C # da Java?

Qualcuno ha una buona soluzione per l’integrazione di alcuni codici C # in un’applicazione java? Il codice è piccolo, quindi potrei riscrivere in java, ma preferirei riutilizzare il codice se ansible. Non ripeterti, ecc. Inoltre, so che posso esporre il C # come un servizio web o altro, ma ci sono alcuni elementi di sicurezza […]

Come passare C structs avanti e indietro al codice Java in JNI?

Ho alcune funzioni C che sto chiamando attraverso JNI che prendono un puntatore a una struttura e altre funzioni che assegnano / liberano un puntatore allo stesso tipo di struttura in modo che sia un po ‘più facile da gestire con il mio wrapper . Sorprendentemente, la documentazione JNI dice molto poco su come gestire […]

In Java Swing come si ottiene un riferimento di handle di finestra Win32 (hwnd) a una finestra?

In Java 1.4 è ansible utilizzare ((SunToolkit) Toolkit.getDefaultToolkit ()). GetNativeWindowHandleFromComponent () ma è stato rimosso. Sembra che tu debba usare JNI per farlo ora. Hai il codice JNI e assumi il codice Java per fare questo? Ho bisogno di questo per chiamare le chiamate API Win32 GetWindowLong e SetWindowLong, che possono essere fatte tramite la […]

Incorporare Java in un’applicazione C ++?

Ho ottenuto un’applicazione scritta in C ++ e sono in grado di estendere le funzionalità delle applicazioni scrivendo plugin in C ++ per questo. Quello che fondamentalmente voglio fare è incorporare Java in questa applicazione. Questo è già stato fatto con Python (non fatto da me). Ho letto qualcosa su JNI ma c’è sempre il […]

JNI che converte jstring in char *

Ho passato una stringa URL da Java a codice C come tipo di dati jstring tramite l’utilizzo di JNI. E il mio metodo di libreria ha bisogno di un char * come url. Come posso convertire jstring in char * ? PS: C’è qualche vantaggio nell’usare jcharArray in C? (cioè passaggio di char [] invece […]

Passando i puntatori tra C e Java attraverso JNI

Al momento, sto cercando di creare un’applicazione Java che usi la funzionalità CUDA. La connessione tra CUDA e Java funziona bene, ma ho un altro problema e volevo chiederti se i miei pensieri a riguardo sono corretti. Quando chiamo una funzione nativa da Java, gli passo alcuni dati, le funzioni calcolano qualcosa e restituiscono un […]