JNI eclipse Javah自动生成

时间:2014-07-21 15:07:59

标签: java eclipse opencv

您好我正在使用javah生成头文件。我尝试了以下两种方式,但它们都不适合我。

方法1:在bin / classes中,我使用

javah -jni com.example.test.NativeLib

报道:

 Error: Could not find class file for 'com.example.test.NativeLib'.

但它有时适合我(任何人都知道为什么?)。

然后我使用以下非常流行的方式:在src /

javah -classpath ../bin/classes -jni com.example.test.NativeLib

报道:

Error: Class org.opencv.core.Mat could not be found.

然后我添加了OpenCV类路径:

javah -classpath ../bin/classes/:D:/OpenCV/OpenCV-2.4.9-android-sdk/sdk/java/bin/classes -jni com.example.test.NativeLib

报告:

Error: Could not find class file for 'com.example.test.NativeLib'.

一次。

任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

轻松将类路径指向opencv java类所在的位置。 javah在其类路径中需要此类。

  

org.opencv.core.Mat

所以,很容易用它喂它。如果您从official opencv Download center下载了opencv4android并将其解压缩到$ opencv4android中,那么您会发现这一点。 $ opencv4android / SDK / JAVA / SRC

   -$opencv4android/
    |
    |
     ------sdk
           |
            -java
             |
               - src
                 |
                  - org
                    |
                     -- opencv
                        |
                        -- android
                        -- calib3d
                        -- core
                          |
                           -- Algorithm.java
                           -- Core.java
                              ......

                        -- engine
                        -- features2d
                        -- imgcodecs
                        -- ml
                        -- objdetect
                        -- photo
                        -- utils
                        -- video
                        -- videoio

仅供参考,我在Windows 8上使用opencv 3.0.0版和Android studio。 这就是javah正在寻找的东西。

Windows用户

打开终端导航到以下地址

  

[项目路径] \ app \ src \ main

并编写以下代码行:

javah -d jni -classpath [path to your android sdk]\platforms\android-19\android.jar;[path to your opencv4android]\sdk\java\src;..\..\build\intermediates\classes\debug com.example.test.NativeLib

现在javah可以访问所有opencv类。

Linux用户

请注意,在写出类路径中的类时,您应该使用:(冒号)而不是;(分号)分隔搜索地址。