Bonjour,
J'ai un problème avec une appli dont l'architecture utilisent quelques threads (controller, pollers..) et je cherche à rajouter une fonctionnalité.
Ma fonctionnalité utilise une librairie en C que j'ai implémentée, et que le Java appelle tout simplement par une fonction dans une classe d'interface JNI. J'ai donc créer une classe Java qui contient des fonctions "public native void blabla()"
J'ai créé un proto Java pour tester ma fonctionnalité voilà à quoi il ressemble :
J'ai testé les 2 cas de figures suivant (dans chacun des tests je commente alternativement la ligne A ou la ligne B)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class Proto extends Thread{ public static void main(String[] args) { Proto proto = new Proto(); proto.testApi(); // Cas #1 - ligne A proto.start(); // Cas #2 - ligne B } public void run() { testApi(); } public void testApi() { ClasseAvecJNI service = new ClasseAvecJNI(); service.lancerTraitement(); } }
// Cas #1 : Sans lancer de thread, ça marche
Avec cette ligne, le traitement est effectué
// Cas #2 : Je lance un thread, ça plante
Avec cette ligne, le traitement est en échec.
L'APi en C me dit "Erreur réseau - Reception impossible"
![]()
Une idée??
edit : un (gros) détail : je fais ça sous AIX 5.3
Partager