2010-03-15 11 views
9

cuando estoy tratando de ejecutar mi programa que está dando el siguiente error¿Cuál es la causa de un UnsatisfiedLinkError?

 Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1030) 
at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184) 
at com.jacob.com.JacobObject.<clinit>(JacobObject.java:108) 
at javaSMSTest.main(javaSMSTest.java:18) 

favor ayuda

+0

Cambie su título para que sea más explícito – chburd

+1

¿Podría publicar su código también (específicamente 'LibraryLoader.loadJacobLibrary()')? –

Respuesta

20

Desde el Javadoc:

produce si la Máquina Virtual de Java no puede encontrar un nativo apropiado - Definición del lenguaje de un método declarado nativo.

Es un error relacionado con JNI. loadJacobLibrary está intentando cargar la biblioteca nativa llamada jacob-1.14.3-x86 y no se encuentra en la ruta definida por java.library.path. Esta ruta se debe definir como una propiedad del sistema cuando se inicia la JVM. p.ej.

-Djava.library.path=<dir where jacob library is> 

En Windows, el archivo real biblioteca nativa se llama Jacob-1.14.3-x86.dll mientras que en Linux sería llamado libjacob-1.14.3-x86.so

+0

¿no se llamaría libjacob-1.14.3-x86.so en su lugar? –

+1

Sí ...... Corregido. – Mark

+0

, agregaría que la ruta no debería terminar con barra inclinada/barra invertida, solo con el nombre del directorio (oh dios, estaba cometiendo este error) –

1

Es necesario el Biblioteca jacob-1.14.3-x86 en su ruta de la biblioteca java.

En Windows, esto sería jacob-1.14.3-x86.dll.

Este es un archivo binario que utiliza Java para ejecutar métodos nativos. Probablemente sea requerido por alguna biblioteca (jar) que esté usando.

En here puede ver no solo un frasco, sino también el binario requerido por el frasco. Elija el de su plataforma.

0

Para citar http://www.velocityreviews.com/forums/t143642-jni-unsatisfied-link-error-but-the-method-name-is-correct.html:

Hay dos cosas que causan UnsatisfiedLinkError. Una es cuando System.loadLibrary() no puede cargar la biblioteca, la otra es cuando la JVM no puede encontrar un método específico en la biblioteca. El texto del mensaje de error en sí mismo le indicará que es el caso ...

el error que usted describe claramente no puede encontrar la biblioteca en absoluto. Como han dicho los demás, inclúyalo en la ruta de la biblioteca de Java.

El otro error — cuando la biblioteca se puede encontrar, pero el método dentro de la biblioteca no se encuentra — se ve de la siguiente manera:

java.lang.UnsatisfiedLinkError: myObject.method([Ljava/lang/Object;)V 

En este caso, o bien tienen el nombre del método equivocado, o tendrá que Regrese y agregue el método y vuelva a compilar el código ...

Cuestiones relacionadas