2013-02-12 8 views
2

J'utilise Java 1.7.0 sur Windows 7 et en essayant de charger une dll 64 bits situé dans C:/Program Files (x86)/Common Files/app_name/. Je reçois l'erreur suivanteune dll 64 bits avec 64 bits JDK 1.7.0

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
C:\Program Files (x86)\Common Files\app_name\app.dll: %1 
is not a valid Win32 application 

J'ai copié le dll dans un répertoire différent (c.-à-C:\Temp) et a été en mesure de charger le dll très bien. Je pense que cette erreur est due au fait que la DLL se trouve sous Program Files (x86), et java essaie de le charger comme une DLL 32 bits. Est-ce que la JVM fait certaines hypothèses à propos de dll sous Program Files et Program Files (x86)?

+0

pourraient être les espaces dans le chemin du fichier? –

+0

Je ne pense pas, il semble trouver la DLL, c'est juste essayer de le charger comme une DLL 32 bits plutôt que d'une DLL 64 bits. –

+0

Je viens de dire que parce que je sais parfois que les langues se plaignent des espaces dans les chemins (beaucoup de choses linux sont comme ça) je pense qu'il est juste de dire que ça fait l'hypothèse que si c'est dans le dossier x86 c'est 32 bits –

Répondre

0

Ce n'est certainement pas une question de chemin. La seule question concerne la version de JavaVM que vous utilisez. Si c'est la version 32 bits de Java, il tentera de charger n'importe quelle DLL en tant que DLL 32 bits, si c'est la version 64 bits de Java, il tentera de charger n'importe quelle DLL en tant que DLL 64 bits. Donc, soit - Vous avez seulement le Java 32 bits installé sur votre système, et essayez de charger une DLL 64 bits; ou - Vous avez installé Java 32 bits et 64 bits, vous devez vous assurer que vous utilisez la version 64 bits pour votre test.

Le fait que vous prétendez que vous avez utilisé avec succès la DLL à partir d'un autre dossier suggère ce dernier, alors assurez-vous que l'exécutable java que vous utilisez est la version 64 bits.

Questions connexes