1. 程式人生 > >Android問題集錦轉載之三 Javah 常見錯誤記錄-NDK與JNI除錯

Android問題集錦轉載之三 Javah 常見錯誤記錄-NDK與JNI除錯

               

測試檔案:hello-jni/src/com/example/hellojni/HelloJni.java

[Java] view plain copy print?
  1. /** 
  2.  * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一些修改。 
  3.  */
  4. package com.example.hellojni;  
  5. publicclass HelloJni  
  6. {  
  7.     publicnative String  stringFromJNI();  
  8.     publicnative String  unimplementedStringFromJNI();  
  9.     static
     {  
  10.         System.loadLibrary("hello-jni");  
  11.     }  
  12. }  
/** * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一些修改。 */package com.example.hellojni;public class HelloJni{    public native String  stringFromJNI();    public native String  unimplementedStringFromJNI();    static {        System.loadLibrary("hello-jni");    }}

錯誤一

[Java] view plain copy print?
  1. david@xmomx:hellojni$ javac HelloJni.java   
  2. david@xmomx:hellojni$ ls  
  3. Hello.class  Hello.h  Hello.java  HelloJni.class  HelloJni.java  
  4. david@xmomx:hellojni$ javah -jni HelloJni  
  5. error: cannot access HelloJni  
  6. bad class file: ./HelloJni.class
  7. class file contains wrong class
    : com.example.hellojni.HelloJni  
  8. Please remove or make sure it appears in the correct subdirectory of the classpath.  
  9. com.sun.tools.javac.util.Abort  
  10.     at com.sun.tools.javac.comp.Check.completionError(Check.java:164)  
  11.     at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)  
  12.     at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77)  
  13.     at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159)  
  14.     at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)  
  15.     at com.sun.tools.javadoc.Start.begin(Start.java:128)  
  16.     at com.sun.tools.javadoc.Main.execute(Main.java:66)  
  17.     at com.sun.tools.javah.Main.main(Main.java:147)  
  18. javadoc: error - fatal error  
  19. 2 errors  
[email protected]:hellojni$ javac HelloJni.java [email protected]:hellojni$ lsHello.class  Hello.h  Hello.java  HelloJni.class  [email protected]:hellojni$ javah -jni HelloJnierror: cannot access HelloJnibad class file: ./HelloJni.classclass file contains wrong class: com.example.hellojni.HelloJniPlease remove or make sure it appears in the correct subdirectory of the classpath.com.sun.tools.javac.util.Abort at com.sun.tools.javac.comp.Check.completionError(Check.java:164) at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149) at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77) at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:159) at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330) at com.sun.tools.javadoc.Start.begin(Start.java:128) at com.sun.tools.javadoc.Main.execute(Main.java:66) at com.sun.tools.javah.Main.main(Main.java:147)javadoc: error - fatal error2 errors

錯誤原因,沒有在正確的路徑下執行 javah 命令,應該在原始碼根目錄下執行。

錯誤二:

[Java] view plain copy print?
  1. david@xmomx:hellojni$ cd ../../../  
  2. david@xmomx:src$ ls  
  3. com  
  4. david@xmomx:src$ javah -jni HelloJni  
  5. error: cannot access HelloJni  
  6. class file for HelloJni not found  
  7. javadoc: error - Class HelloJni not found.  
  8. Error: No classes were specified on the command line.  Try -help.  
[email protected]:hellojni$ cd ../../../[email protected]:src$ [email protected]:src$ javah -jni HelloJnierror: cannot access HelloJniclass file for HelloJni not foundjavadoc: error - Class HelloJni not found.Error: No classes were specified on the command line.  Try -help.

錯誤原因:Classes 引數要使用完整類名,也就是說要加上包名

錯誤四:

[Java] view plain copy print?
  1. david@xmomx:src$ javah -jni com/example/hellojni/HelloJni  
  2. javadoc: error - Illegal package name: "com/example/hellojni/HelloJni"
  3. 1 error  
[email protected]:src$ javah -jni com/example/hellojni/HelloJnijavadoc: error - Illegal package name: "com/example/hellojni/HelloJni"1 error

錯誤原因:完整類名格式錯誤

[Java] view plain copy print?
  1. david@xmomx:src$ javah -jni com.example.hellojni.HelloJni  
[email protected]:src$ javah -jni com.example.hellojni.HelloJni

OK,編譯通過。

如果還有錯誤,說是類找不到還是什麼的,請嘗試新增 -classpath . 引數。如下:

[Java] view plain copy print?
  1. david@xmomx:src$ javah -jni -classpath . com.example.hellojni.HelloJni  
[email protected]:src$ javah -jni -classpath . com.example.hellojni.HelloJni
           

相關推薦

Android問題集錦轉載 Javah 常見錯誤記錄-NDKJNI除錯

                測試檔案:hello-jni/src/com/example/hellojni/HelloJni.java[Java] view plain copy print?/**  * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一

Android問題集錦轉載Javah 常見錯誤記錄-NDKJNI除錯

測試檔案:hello-jni/src/com/example/hellojni/HelloJni.java/** * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一些修改。 */ package com.example

Android問題集錦轉載八:fastboot找不到裝置

轉載補充:1、首先,手機必須先進入bootloader狀態,fastboot devices才能有所反應(有列印資訊);如果 adb devices可以看到自己的手機,可以直接在shell上敲命令:adb reboot bootloader耐心等待一下,應該就會進入bootl

圖像處理常見雙立方插值算法

log views 實現 ack oar 過程 線表 const filter http://blog.csdn.net/jia20003/article/details/40020775 圖像處理之三種常見雙立方插值算法 雙立方插值計算涉及到16個像素點,其中(i’, j

Android實戰技巧十八:Handler使用中可能引發的內存泄漏

sha 指向 ons har 引用 destroy 對象 from weak 問題描寫敘述 曾幾何時,我們用原來的辦法使用Handler時會有以下一段溫馨的提示: This Handler class should be static or le

ELK學習筆記Elasticsearch啟動常見錯誤

  問題出現的環境: OS版本:CentOS-7-x86_64-Minimal-1708 ES版本:elasticsearch-6.2.2   1. max file descriptors [4096] for elasticsearch process is too

Android應用開發中常見的圖片壓縮方法

Android應用開發中三種常見的圖片壓縮方法,分別是:質量壓縮法、比例壓縮法(根據路徑獲取圖片並壓縮)和比例壓縮法(根據Bitmap圖片壓縮)。 一、質量壓縮法 private Bitmap compressImage(Bitmap image) { ByteArrayOutput

【U3D入門小白教程——代碼篇】常見腳本函數

force avi log tar 啟動 for gravity vector 教程 個人學習第三章節:常見腳本 1.Awake( )與Start() Awake( )在遊戲創建時調用,用於設置遊戲初始化的參數 Start( )在腳本被調用,執行在所有Update( )之

Android電源管理:PowerManager.WakeLock原始碼詳讀

PowerManager.WakeLock 有加鎖和解鎖兩種狀態,加鎖的方式有兩種,一種是永久的鎖,這樣的鎖除非顯式的放開,是不會解鎖的,所以這種鎖用起來要非常的小心。第二種鎖是超時鎖,這種鎖會在鎖住後一段時間自動解鎖。         在建立了PowerManager.W

Android實戰技巧十五 瞭解native activity

                     1.native activity的意義很多人覺得Android的Fwk提供的支援足夠好了,既然Google不推薦用Ndk開發為什麼又放寬Ndk的限制而推出可以無Java開發Android App呢?我的理解是不同的技術實現會有其適合的場景。 Ndk的適用場景官方給出

【我的Android進階旅】修復錯誤:Use of generics not allowed for java type at 'com.fasterxml.jackson.databind’

一、問題描述 剛把app專案的compileSdkVer 改為 28,buildToolsVer改為"28.0.3"之後,編譯失敗了,失敗錯誤如下所示: Warning: Exception while processing task java.io.IOException

Android實戰技巧十五:瞭解native activity

1.native activity的意義 很多人覺得Android的Fwk提供的支援足夠好了,既然Google不推薦用Ndk開發為什麼又放寬Ndk的限制而推出可以無Java開發Android App呢?我的理解是不同的技術實現會有其適合的場景。 Ndk的適用

android ListView佈局(使用自定義的Adapter繫結資料,通過contextView.setTag繫結資料)有按鈕的ListView

http://blog.csdn.net/chenzheng_java/article/details/6202586 最終結果圖: 程式碼結構示意圖 vlist2.xml程式碼: &

android記憶體優化記憶體分析工具的使用

 anroid記憶體分析工具的使用 一.Eclipse Heap分析記憶體洩露           Android開發中避免不了碰到記憶體洩露問題,這裡先大概講下記憶體洩露的基本概念:記憶體洩露官方的解釋是是用動態儲存分配函式動態開闢的空間,在使用完畢後未釋放,結果導致一直

Android實戰技巧十七:圖片的Base64編解碼

通常用Base64這種編解碼方式將二進位制資料轉換成可見的字串格式,就是我們常說的大串,10塊錢一串的那種,^_^。 Android的android.util包下直接提供了一個功能十分完備的Base64類供我們使用,下面就演示一下如何將一張圖片進行Base64

android機制系列 Handler實現原理

系列之三 執行緒間通訊-Handler 備註:直接跳過了系列2,是因為Binder十分複雜,想要學習後,並總結一些可能比較難。暫時跳過,先分享一些簡單的。不過從目前研究的廣播機制原理,contentProvider都繞不開binder。所以會盡快給自

Android支付寶整合流程及其常見錯誤

一、你需要關心的東西 1.申請與認證(這不是這篇文章的重點,如有需要我會單獨寫一篇) 2.服務端的搭建(簽名,同樣很多坑) 3.金鑰的生成 二、金鑰生成 第一步就一大坑,為了個金鑰支付寶出了4個工具!你沒看錯,就是4個。寫一個不行嗎…剛

Android小專案 splash介面

------- 源自夢想、永遠是你IT事業的好友、只是勇敢地說出我學到! ---------- 按慣例,寫在前面的:可能在學習Android的過程中,大家會和我一樣,學習過大量的基礎知識,很多的知識點也都能說出了123來,但是這些孤立的點終究顯得太零散了,因此,我想從今天

定製Android系統開發——跟著我實現系統服務

在這篇博文中,我將一步一步建立一個SystemService。 這個系統服務是用於控制收音機的,名字就叫做RadioManagerService。 新建IRadioManager.aidl; 在framework/base/core/java/amdr

Android核心學習----------Power原始碼分析學習(1)

Android核心學習 -----Power原始碼分析學習(1) 1.    前言 最近學習了一下Android的Power原始碼,雖然還沒學習通透,但是有點感覺了,怕後面忘了東西,就邊學便把東西記錄下來吧。如果有大神再致電一二那更是感激不盡了 Android4.4