Appele d'une dll marche avec class java normal mais avec JApplet non [Résolu]

Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
- - Dernière réponse : cs_avg
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
- 8 avril 2010 à 11:48
Bonjour à tous
j'ai une souci avec Applet java appelant une dll lorsque j'ai tester dll avec une class java ça marcher mais avec Applet il m'affiche


Unable to load library



même si j'ai mis mon dll sur system32 même problème et lorsue j'ai tester d'appeler le fichier system msvcrt elle marche
J'utilise le jar jna et méthode LoadLibrary() ça marche avec class normal mais avec Applet non.
Merci pour vos aides
Afficher la suite 

20/37 réponses

Meilleure réponse
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
3
Merci
aprés un long recherche sur internet
j'ai trouvé la bonne Solution Merci à ghezella
Tapez le texte de l'url ici.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_avg
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
3
Merci
il faut Signer le jna.jar aussi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_avg
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
3
Merci
Salut Dark,

enfin j'ai résolu mon probléme Mon Applet ne vient pas de voir ma dll TestDLL.dll car il faut ajouter les fichiers dll que TestDLL.dll l'utilise sur le même dossier que monApplet l'accede comme System32

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 137 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Est-ce que ton applet est signée ?

Cela pose des problèmes de sécurité d'accéder à une dll, et le jar de l'applet doit être signée pour pouvoir y accéder.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
Est-ce que ton applet est signée ?

Cela pose des problèmes de sécurité d'accéder à une dll, et le jar de l'applet doit être signée pour pouvoir y accéder

mais comment puisse signer mon applet et mon jar. j'ai chercher sur le net mais tout les reponse ne sont pas avec Eclipse
Le logiciel : Eclipse 3.5.2
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Il ne me semble pas qu'eclipse puisse signer une applet (bien qu'il doit bien exister un plugin pour cà) : il faut utiliser les outils du sdk : keytool pour générer la clé, et jarsigner pour signer le jar.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
j'ai chercher sur le net comment signer le jar et l'applet mais je trouve des commandes comme keytool et jarsigner dans cet lien Tapez le texte de l'url ici.
Mais lorsque je tappe sur l'invite de commande il me dit que keytool et jarsigner n'est pas une commande
aide svp
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Il faut soit que tu inscrives le dossier bin de java dans ta variable d'environnement PATH, soit te positionner dans ce répertoire avec ta console.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
j'ai deux bin de jre et de jdk lequel je doit inscrit dans le path
Merci pour votre disponibilité
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

C'est celui du jdk : le jre ne permet que d'exécuter un programme java. Le jdk permet quand à lui de développer des applications en java.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
j'ai réussie a signer mon jar qui est obtenu après exportation avec Eclipse
mais comment signer l'applet
pouvez vous m'aider
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

C'est le jar qui est signé, pas l'applet : une clé a été rajouté au jar pour être sûr que le jar en question n'est pas modifié par un hacker.

Lorsqu'un utilisateur va télécharger ton jar, une autorisation lui sera demandée par le navigateur pour savoir s'il accepte ou non d'exécuter l'applet.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
Bonjour,
j'ai signé mon jar et fait quelque modification dans le code comme le écrire le chemin de la dll à ouvrire pour plus de précision mais l'Applet ne peut pas faire l'acces au dll et si je l'execute sur Eclipse elle charge le dll demander
voila la méthode que je l'appel dans l'Applet
static CInterface demo;
String idf;
public int initdll()
{
// Library is c for unix and msvcrt for windows
    String libName = "C:/WINDOWS/system32/msvcrt"; 
    
    
  
    // Loading dynamically the library
    
    try{
    demo = (CInterface) Native.loadLibrary(libName, CInterface.class);
    }catch(Exception e)
    {
    	e.printStackTrace();
    }
    if(demo!=null)
    {
    	return 1;
    }else
    {
    	return 0;
    }
}

l'execution de cet Applet sur Eclipse avant l'exportation marche sans aucune problème
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Les droits du Applet ne sont pas les mêmes entre une exécution sous eclipse et une fois compilée sous forme de jar et exécuté par le navigateur.

Est-ce que le navigateur te demande ton autorisation lorsque tu essaye d'exécuter l'applet avec lui ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
Salut Dark,
oui il me demande une autorisation et je l'accepte mais il reste incapable d'acceder au dll je vous précise l'erreur car j'ai fait das affichage dans JtextField il afficche le texte avant l'acces au dll mais si j'appele la méthode citer précedament il n'affiche pas le texte aprés je suis sure que l'erreur provient de
LoadLibrary()

voila partie pour l'appel dans l'applet
bouton.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
//tf.setText("dll");
hello hl=new hello();
tf.setText(hl.toString());
    	int rs=hl.initdll();
    	if(rs==0)
    	{
    		tf.setText("erreur");
    	}else
    	{
    		tf.setText("charger");
    	}
}
});
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Et quelle est l'exception qui est levée ? (voir dans la console de java).
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
Salut,

l'Applet marche et condole java n'a rien mais le chargementr ne marche pas car en principe le contenue de JtextField doit l'un de cas charger ou erreur mais l'affichage reste qui a été charger par ça
tf.setText(hl.toString());

mais ni
tf.setText("erreur");

ni
tf.setText("charger");
marche ç.a.d que l'execution s'arrete a l'appel de méthode
int rs=hl.initdll();
Commenter la réponse de cs_avg
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
j'ai chercher sur le web et j'ai trouver qu'il faut que dll se retrouve dans le java.library.path
comment je peut le mettre dans ce répértoire
Merci Dark vous étes trés gentil
Commenter la réponse de cs_avg
Messages postés
97
Date d'inscription
lundi 5 novembre 2007
Statut
Membre
Dernière intervention
20 août 2011
0
Merci
Salut Dark,
j'ai tester une auttre applet qui ecrit sur le disque sur c: elle marche sur le navigateur apés que le jar a été signer mais le chargement de la dll reste le même probléme
Commenter la réponse de cs_avg
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
86
0
Merci
Salut,

Le java.library.path est le dossier "lib" de ton jre (ou jdk).

Par contre, cela veut dire qu'il faut copier le fichier dans ce dossier par ton applet AVANT d'y faire appel (c'est vrai que j'avais totalement zappé ce point !).

Il te faut donc packager la dll dans ton jar, et l'extraire et la copier dans le bon dossier. Et attention, ton applet ne sera uniquement exécutable QUE sous windows.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Commenter la réponse de cs_DARKSIDIOUS