J'essaie d'utiliser SVMLight de Java, en utilisant le wrapper JNI de cette page :
static {
System.loadLibrary("lib/JNI_SVM-light-6.01/lib/svmlight");
}
Je reçois l'erreur suivante:
... lib\JNI_SVM-light-6.01\lib\svmlight.dll: Impossible de charger le fichier .dll sur une plate-forme AMD 64 bits
Puis-je résoudre ce problème en recompilant le fichier .dll pour 64 bits? Comment pourrais-je m'y prendre? Existe-t-il une autre solution de contournement que je puisse utiliser? SVMLight rend le code source C disponible.
Oui, vous devrez recompiler le DLL pour 64 bits. Votre seule autre option consiste à basculer vers une JVM 32 bits ou à demander à un processus 32 bits de charger la DLL en votre nom et de communiquer avec ce processus.
J'ai eu le même problème avec une application Java utilisant tibco dll qui devait à l'origine fonctionner sous Windows XP. Pour que cela fonctionne sous Windows 7, j'ai fait en sorte que l'application pointe sur JRE 32 bits. En attendant de voir s'il existe une autre solution.
Réponse courte à la première question: oui.
Réponse plus longue: peut-être; cela dépend si le processus de construction de SVMLight se comporte sur des fenêtres 64 bits.
Note finale: cet appel à System.loadLibrary est idiot. Appelez System.load avec un chemin d'accès complet ou laissez-le rechercher Java.library.path.
Je l'ai obtenu de - http://blog.cedarsoft.com/2010/11/setting-Java-library-path-programmatically/
Si vous définissez Java.library.path, vous devez disposer des lignes suivantes pour pouvoir fonctionner.
Field fieldSysPath;
fieldSysPath = ClassLoader.class.getDeclaredField( "sys_paths" );
fieldSysPath.setAccessible( true );
fieldSysPath.set( null, null );
Avait le même problème dans Win64bit et JVM 64bit
A été résolu en téléchargeant dll sur system32
Aller à
Propriétés du projet >> Exécuter >> Options VM
et mettez cette adresse:
-Djava.library.path="C:\opencv\build\Java\x64"
Assurez-vous que vous définissez PATH sur Program Files (x86) not Program Files . Cela a résolu mon problème.
Ne vous inquiétez pas, vous devriez simplement changer .dll de x64 à x86, dans la bibliothèque native.
par exemple, vous avez peut-être sélectionné cette option (C:\opencv\build\Java\x64).
à la place, vous sélectionnez cette option pour la bibliothèque native (C:\opencv\build\Java\x86).
Il suffit d’aller pour installer download jdk_x86 et il s’installe dans Program Files (x86) et définit le chemin jre dans votre projet. C'est tout.
Mon ordinateur portable Windows a les clients 32 et 64 bits que j'ai commencé à faire face tout d'un coup, puis j'ai réordonné la variable de chemin comme ci-dessous
Avant:
C:\app\Oracle64\product\12.1.0\client_1\bin;
C:\app\Oracle32\product\12.1.0\client_1\bin;
Après:
C:\app\Oracle32\product\12.1.0\client_1\bin;
C:\app\Oracle64\product\12.1.0\client_1\bin;
commencé à travailler ... J'espère que cela aide tout le monde.
J'ai eu un problème lors de l'exécution de Red5 (Tomcat) sur Windows x64 qui fonctionnait auparavant sous Windows x32, erreur suivante:
INFO pool-15-thread-1 com.home.launcher.CommandLauncher - Exception in thread "main" Java.lang.UnsatisfiedLinkError: C:\....\lib\Data Samolet.dll: Can't find dependent libraries
INFO pool-15-thread-1 com.home.launcher.CommandLauncher - at Java.lang.ClassLoader$NativeLibrary.load(Native Method)
Problème résolu lors de l'installation de la version Java x32 et de la configuration suivante
"Variables d'environnement"
"Variables utilisateur pour la maison"
Java_HOME => C:\Fichiers de programme (x86)\Java\jdk.1.6.0_45
"Variables système"
Chemin d'accès [au début] => C:\Program Files\Java\jdk.1.8.0_60; ..
J'ai eu un problème lié à cela et lisais
"Exception in thread "main" Java.lang.UnsatisfiedLinkError: C:\opencv\build\Java\x86\opencv_Java2413.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform "and it took me an entire night to figure out.
J'ai résolu mon problème en copiant la dll dans C:\opencv\build\Java\x64
dans mon dossier system32. J'espère que cela aidera quelqu'un.