Skip to main content
 首页 » 编程设计

java之在linux-Fedora core上编译JNI程序

2023年11月22日8xxx_UU

<分区>

我试图探索 Linux 中的 JNI 部分。我是C背景的。我试图使用 JNI,这样我就可以轻松地用 Java 制作 UI。我相信 UI 可以用 Javascript/html 制作。这可以很容易地调用 Java api。通过 Java Api,我可以调用 C/C++ API 的 .我相信这是制作 UI 的最简单方法。因此,我正在试用 JNI。这是我制作的示例代码。

Hello.java

public class Hello {  
  public native void sayHi(String who, int times); 
    static { System.loadLibrary("HelloImpl"); } 
    public static void main (String[] args) {  
      Hello hello = new Hello();  
      hello.sayHi(args[0], Integer.parseInt(args[1])); 
    } 
} 

后来

javac Hello.java 
javah -jni Hello 

现在,我正在写hello.c程序

#include <stdio.h> 
#include "Hello.h" 
 
JNIEXPORT void JNICALL Java_Hello_sayHi 
  (JNIEnv *, jobject, jstring, jint) 
{ 
   printf("Shreyas.. HEllo world...\r\n"); 
 
} 

我在编译 hello.c 程序时遇到问题。

$ gcc -c  hello.c -I/usr/java/jdk1.7.0_45/include/ -I/usr/java/jdk1.7.0_45/include/linux/ 
hello.c: In function ‘Java_Hello_sayHi’: 
hello.c:5:3: error: parameter name omitted 
hello.c:5:3: error: parameter name omitted 
hello.c:5:3: error: parameter name omitted 
hello.c:5:3: error: parameter name omitted 

你能帮我解决这个问题吗?另外,您是否同意 JNI 是实现完整堆​​栈解决方案的好方法 - UI(JAVASCRIPT)+JAVA+C/C++->Linux?