Este ejemplo le lleva a través del proceso de utilizar bibliotecas compartidas nativas con una aplicación Java™ en sistemas Windows.
Procedimiento
- Cree una aplicación de ejemplo, Sample.java.
public class Sample
{
public native void printFromNative( );
public static void main( String[] args )
{
Sample sample = new Sample( );
sample.printFromNative( );
}
static
{
try
{
System.loadLibrary( "Sample" );
}
catch ( Exception e )
{
System.out.println( "ERROR: Unable to load libSample.so");
e.printStackTrace( );
}
}
}
- Compilar Sample.java.
- Utilice javah para crear un archivo de cabecera para el código nativo.
- Cree un archivo denominado Sample.c.
#include <stdio.h>
#include "Sample.h"
JNIEXPORT void JNICALL Java_Sample_printFromNative( JNIEnv * env, jobject obj )
{
printf( "Printing from native\n" );
}
- Compile Sample.c y, a continuación, enlace y enlace en una biblioteca compartida que se pueda cargar y llamar dinámicamente desde Java.
cl -Ic:\java\include -Ic:\java\include\win64 -MD -LD Sample.c -Fe Sample.dll
- -MD
- Garantiza que Sample.dll esté enlazado con la biblioteca C multihebra de Win64.
- -LD
- Instruye el compilador C para que genere una DLL en lugar de un programa ejecutable Win64 regular.
- Ejecute la clase Sample.
set PATH=<path-generated-dll>;%PATH%
or
java -Djava.library.path=. Sample
La salida del programa será la siguiente:
Printing
from native
Resultados
Ahora debería poder utilizar la misma infraestructura para acceder a bibliotecas compartidas nativas desde aplicaciones Java.