【发布时间】:2015-07-06 14:01:02
【问题描述】:
我使用的是 Linux (Ubuntu 12.10)。我已经在 SO 上尝试了this 问题以及网络上的许多其他问题,但我无法解决我的问题。
这里是java文件:
class HelloWorld
{
public native void display();
static
{
System.loadLibrary("HelloWorld");
}
public static void main(String args[])
{
HelloWorld hw = new HelloWorld();
hw.display();
}
}
我使用javac HelloWorld.java编译它。
然后我使用javah -jni HelloWorld 从.class 文件创建了头文件。我得到了这个头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: display
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_display
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
在此之后,我创建了以下 C 文件:
#include <stdio.h>
#include "HelloWorld.h"
void display();
int main()
{
display();
return 0;
}
void display()
{
printf("Hello World Naveen\n");
}
并使用gcc -o libHelloWorld.so -fPIC -lc -shared -I/usr/lib/jvm/java-6-oracle/include/ -I/usr/lib/jvm/java-6-oracle/include/linux HelloWorld.c 编译。
然后我做了echo $LD_LIBRARY_PATH=.。但是当我运行java HelloWorld 时,我得到UnsatisfiedLinkError
【问题讨论】:
标签: java c++ c oracle java-native-interface