2012-09-18 99 views
0

对于我的项目之一,我需要将我的java class的本地c代码调用到我的项目中。为此我做了以下步骤。如何使用包含共享库(.so)创建JAR文件

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

    public native String print(String pM,int len); 
    
    public native int openPrint(); 
    
  2. 我发起的库文件,如下图所示

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

  4. 创建的C文件并在此之后我生成的库文件即libprint.so使用ndk-build

  5. 库文件创建成功在libs->armeabi->libprint.so

  6. 以上在C的方法实现

  7. 每当我运行Java应用程序它给错误说,

    Exception in thread "main" java.lang.UnsatisfiedLinkError: 
        no print in java.library.path 
    

我该如何解决这个问题。

我想给这种应用到其他Android开发人员,使他们能够创建一个没有做电话本地人,且不产生libprint.so文件

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

如何创建JAR文件,其中包括libprint.so也..

我使用Eclipse和开放JDK6做Ubuntu的所有东西上面。

+0

可能的重复:http://stackoverflow.com/questions/2937406/how-to-bundle-a-native-library-and-a-jni-library-inside-a-jar – oers

+1

可能想看一看在相关的问题。 [如何对管束-A-本机库和 - a - JNI的库内侧-A-罐(http://stackoverflow.com/questions/2937406/how-to-bundle-a-native-库和 - a - JNI的库内侧-A-罐子?RQ = 1) – asgs

回答

1

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

试试吧,它可能会帮助你。

相关问题