Android問題集錦轉載之三 Javah 常見錯誤記錄-NDK與JNI除錯
測試檔案:hello-jni/src/com/example/hellojni/HelloJni.java
[Java] view plain copy print?- /**
- * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一些修改。
- */
- package com.example.hellojni;
- publicclass HelloJni
- {
- publicnative String stringFromJNI();
- publicnative String unimplementedStringFromJNI();
- static
- System.loadLibrary("hello-jni");
- }
- }
/** * 該檔案來自 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?- david@xmomx:hellojni$ javac HelloJni.java
- david@xmomx:hellojni$ ls
- Hello.class Hello.h Hello.java HelloJni.class HelloJni.java
- david@xmomx:hellojni$ javah -jni HelloJni
- error: cannot access HelloJni
- bad class file: ./HelloJni.class
- class file contains wrong class
- Please 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 error
- 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?- david@xmomx:hellojni$ cd ../../../
- david@xmomx:src$ ls
- com
- david@xmomx:src$ javah -jni HelloJni
- error: cannot access HelloJni
- class file for HelloJni not found
- javadoc: error - Class HelloJni not found.
- 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?- david@xmomx:src$ javah -jni com/example/hellojni/HelloJni
- javadoc: error - Illegal package name: "com/example/hellojni/HelloJni"
- 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?- 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?- david@xmomx:src$ javah -jni -classpath . com.example.hellojni.HelloJni
[email protected]:src$ javah -jni -classpath . com.example.hellojni.HelloJni
相關推薦
Android問題集錦轉載之三 Javah 常見錯誤記錄-NDK與JNI除錯
測試檔案:hello-jni/src/com/example/hellojni/HelloJni.java[Java] view plain copy print?/** * 該檔案來自 Android NDK Sample - HelloJni, 為了便於說明問題,我作了一
Android問題集錦轉載之三:Javah 常見錯誤記錄-NDK與JNI除錯
測試檔案: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