2010-12-14 24 views
0

Nous avons une application Web GWT qui utilise JNI pour appeler une DLL. Nous construisons la DLL aussi. Cela fonctionne très bien sur ma machine de développement, qui est une machine Windows 7 64 bits, exécutant Java 6 et exécutant les webapps dans Tomcat 6. Mais quand nous l'exécutons sur la machine virtuelle du testeur qui exécute WinXP 32 bits, elleQu'est-ce qui cause UnsatisfiedLinkError pour jniwrap64.dll?

java.lang.UnsatisfiedLinkError: Cannot load native JNIWrapper library (jniwrap64.dll) 
at com.jniwrapper.Library.loadNativeCode(SourceFile:78) 
at com.jniwrapper.Library.loadNativeCode(SourceFile:103) 
at com.jniwrapper.Library.ensureNativeCode(SourceFile:113) 
at com.jniwrapper.Library.load(SourceFile:189) 

Mon JRE_HOME est réglé sur une version 32 bits de Java 6, parce que je voulais que la construction de pouvoir travailler sur une machine 32 bits, mais il est clair que je suis mal-compréhension quelque chose sur la façon dont les 32 ou des versions 64 bits de Java fonctionnent dans la compilation de l'application Web.

Et oui, la DLL que nous appelons est intégrée au .war, car elle fonctionne sur ma machine.

J'ai également googlé le jniwrap64.dll, mais n'a pas trouvé beaucoup qui était pertinent.

Ajouté pour clarification: jniwrap64.dll n'est pas la DLL que j'ai construite, et mon code ne charge pas explicitement cette bibliothèque. Cela fait partie de ma confusion, c'est quoi cette bibliothèque, pourquoi est-elle chargée, etc. J'ai supposé que jniwrap64.dll est une sorte de bibliothèque système qui doit être installée. Mon code qui charge notre bibliothèque est la suivante:

Library myLib = Library(path); 
myLib.load(this.getClass().getClassLoader()); 

Répondre

0

Lorsque vous chargez le dll avec System.loadLibrary() ne vous chargez « jniwrap64.dll » ou « jniwrap32.dll »? Cna tu nous montre la ligne de code qui charge cette librairie?

+0

Merci pour votre réponse; voir mes modifications ci-dessus, dans une tentative de clarifier – user26270

+0

Si le jniwrap64.dll est 64 bits comme je le soupçonne, vous ne serez pas en mesure de charger sur un système 32 bits, en fait, il agira comme si elle était pas ici. Vous devez obtenir la bibliothèque 32 bits et placez-la dans l'emplacement approprié pour que votre logiciel trouve. –