如何使用包含共享库(.so)创建JAR文件

时间:2012-09-18 06:41:20

标签: java android jar java-native-interface

对于我的一个项目,我需要将本机c代码调用到我的java class。为此我做了以下步骤。

  1. 在我的java类中,我声明了一些我的项目所需的本机方法。即

    public native String print(String pM,int len);
    
    public native int openPrint();
    
  2. 我启动了如下文件

    的库文件
    static
    {
        System.loadLibrary("print");
    }
    
  3. 在此之后,我创建了关于java代码的头文件。

  4. 创建了c文件并在c

  5. 中实现了上述方法
  6. 在此之后我使用libprint.so

  7. 生成了库文件,ndk-build
  8. 库文件已在libs->armeabi->libprint.so

  9. 中成功创建
  10. 每当我运行该java应用程序时,它都会给出错误

    Exception in thread "main" java.lang.UnsatisfiedLinkError: 
      no print in java.library.path
    
  11. 如何解决此问题。?

    我想将此类应用程序提供给其他Android开发人员,以便他们可以创建此应用程序而无需执行Native调用而无需创建libprint.so文件

    这意味着我必须将自己的API提供给应用程序开发人员。为此,我必须创建JAR文件。其中包括java.classlibprint.so(共享库)等...

    如何创建包含libprint.so的JAR文件..

    我正在使用eclipse和open-jdk6在ubuntu中完成所有上述工作。

1 个答案:

答案 0 :(得分:0)

在Windows中,如果jar使用dll,则必须将dll复制到jar中的根文件夹。之后程序会找到它。

尝试一下,它可能对你有帮助。