1. 程式人生 > >Android檢視jar包原始碼問題

Android檢視jar包原始碼問題

在Eclipse中開發android的應用程式時,有時想檢視函式的內部實現,但是當在函式上點選ctrl和滑鼠左鍵的時候,

往往出現如下提示: 

Class File Editor

Source not found

The JAR of this class file belongs to container 'Android'  which does not allow modifications to source attachments on its entries.

因此按照如下操作新增對應的原始碼:

選擇workspace 裡面的專案,點選右鍵--->Build Path-->configure build path -->liberaries-->選擇一個jar包--->點選左側的展開三角按鈕--->

展開後選擇Source attachment --->點選右側的 Edit 按鈕--->彈出對話方塊,並選擇External File---->找到指定的原始檔壓縮包。或者可使用外部原始檔目錄。點選OK。

進去以後發現還是不能檢視,同樣的提示!

仔細讀英文的後半部分,在libs中直接引用的第三方jar包不讓其做任何修改。包括新增原始檔參看。

因此在android工程下新建一個lib目錄,將jar包從libs轉移到lib中。然後重複以上過程。

結果就可以查看了!不過一執行你的程式,馬上報錯無法找到class的錯誤。 = =!  死衚衕了~

看來只能將第三方jar放到libs了。

有的牛人這樣解決了:

In order to link the sources and javadoc to a .jar library that is automatically linked by Eclipse you have to do the following.

  1. Place all three .jar files in the libs folder.
  2. Create .properties file in the libs folder with the name of the library .jar (see example).
  3. Specify the relative paths to the sources and javadoc .jar in the .properties file.
  4. Close and re-open the Eclipse project! Optionally refresh the project.
  5. Select an object of the linked library in the source code.
  6. Open the Javadoc view in Eclipse to check the documentation (see screenshot).
  7. Open the source code declaration (default shortcut: F3) of the selected object.
<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="str" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">/libs/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.jar</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">
</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">libs</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.jar</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">properties
</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">libs</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">javadoc</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">jar
</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">libs</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">/</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">sources</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">jar</span></code>

Contents of gson-2.2.2.jar.properties

<code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">src</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">=</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">sources</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">jar
doc</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">=</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gson</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2.2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="lit" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(128, 0, 0);">2</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">-</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">javadoc</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">jar</span></code>

You can of course move the javadoc and sources .jar into other folders and specify relative paths. That's up to you.

enter image description here

但是遺憾的是,弄了半天都沒能解決。可能也跟我用的第三方的jar包不規範的原因,而且我沒有doc檔案。

最終,我想到了一個解決辦法:

新建一個lib目錄

將需要的jar包全部拷貝到該目錄下

依次對每個jar包執行 上面綠色 部分操作

完成後右鍵lib目錄,點選build path--> use as source folder

即可解決檢視原始碼的問題,也可使程式正常執行。

在Eclipse中開發android的應用程式時,有時想檢視函式的內部實現,但是當在函式上點選ctrl和滑鼠左鍵的時候,

往往出現如下提示: 

Class File Editor

Source not found

The JAR of this class file belongs to container 'Android'  which does not allow modifications to source attachments on its entries.

最普遍常見的是android-support-v4沒法看到其中的註釋和原始碼,滑鼠放到類上提示:

Note: This element neither has attached source nor attached Javadoc and hence no Javadoc could be found.

一般來說如果環境配置好了,Android的所有類和所有方法都能看到其程式碼和註釋,以下分兩步,將註釋和程式碼全部配置正確。

1.Android本身jar包的原始碼

這裡假設已經把需要下載的都下載下來了,右鍵專案====》build path====》configure build path

在libraries裡選擇Android x.x.x裡面有Android.jar,這就是開發時所依賴的Android本身的sdk的jar包,點開,裡面有兩個需要配置,

source attachment和javadoc location,前者是原始碼,配置好後可實現ctrl+滑鼠左鍵直接點開想看的Android的類,

後者是原始碼的註釋檔案,配置好後可實現滑鼠放在想看到類上,會顯示出來這個類或者方法的介紹

選擇source attachment配置項,點選右邊edit,選擇external location===》external folder,然後找到正確的路徑,我的是在E:/eclipse/sdk/sources/android-19

選擇javadoc location配置項,edit,選擇javadoc url===》browse,然後找到正確路徑,我的是在file:/E:/eclipse/sdk/docs/reference

完成上面這些就可以正常檢視Android內部常用的類註釋和原始碼了

2.檢視外部依賴jar包的原始碼

這裡假設你已經把外部依賴的jar包正確匯入並且編譯通過了,但是ctrl+滑鼠左鍵想看程式碼或者想看其註釋卻不可行的情況,

首先在libs下面找到引入的包,這裡以android-support-v4.jar為例,

在libs下新建android-support-v4.jar.properties檔案,即與引用的jar包同名最後加上.properties的檔案

其內容如下:

src = E:\\eclipse\\sdk\\extras\\android\\support\\v4\\src

這裡路徑要根據你自己的路徑進行調整,配置之後退出eclipse,在進入,就可以正常查看了。

作者:jason0539


相關推薦

Android檢視jar原始碼問題

在Eclipse中開發android的應用程式時,有時想檢視函式的內部實現,但是當在函式上點選ctrl和滑鼠左鍵的時候, 往往出現如下提示:  Class File Editor Source not found The JAR of this class fil

Android專案匯入jar——Android檢視Jar原始碼——配置

一、Jsoup 的 jar包的匯入和jsoup 的原始碼檢視。 類似【android-support-v4.jar】 (1)Jsoup匯入: 將包直接放入libs目錄下,系統會自動識別——不用修改Build Path! 使用jsoup不需要新增許可權,只是訪問網頁讀取儲

eclipse檢視jar原始碼亂碼問題解決

今天在eclipse中檢視java的jar包中的原始碼時,顯示的全部是亂碼。起初只設置了content types還不行,還是亂碼。不過問題最後解決了,配置步驟如下: 首先要知道你需要配置的編碼格式,比如jar包的原始碼編碼格式是GBK的。那麼我們則配置為GBK。 步驟1

Eclipse線上安裝JD-Eclipse反編譯外掛用於檢視jar原始碼

開啟eclispe,在eclipse的選單欄上選擇Help->Install New Software    2,點選Install New Softeware,進入如下視窗。   3,在對話方塊中點選add按鈕,然後在彈出的對話方塊中

eclipse 檢視jar原始碼兩種方式

我們檢視jar原始碼時,一般是安裝個jd-gui,把jar拷出來,然後從jd-gui中開啟jar再檢視原始碼,這個過程不免有些麻煩,當然,本篇所講的快速檢視的方法也沒什麼高科技手段,只是將jd-gui整合在Eclipse中,然後就可以在Eclipse中直接開啟class了,這

Android studio 不能檢視 support原始碼

there are some combinations if libraries,that are incompatible,or can lead to bugs, One such incompatibility is compiling with a version of the androi

eclipse如何檢視jar原始碼

方法:將jd-gui整合在Eclipse中 步驟: 1、下載jd-gui外掛,我這裡下載的是:jd-eclipse-site-1.0.0-RC2 2、執行eclipse,選擇選單欄Help-->Install New Software 3、在右側視窗,選擇Add-

解決Eclipse,STS檢視第三方jar原始碼問題

我們再用編譯工具的時候,如果不配是我們是看不了第三方jar包的原始碼,只能看到jdk自帶jar包原始碼。下面我們來解決這個問題。 解決方法: 1、jar包下都為編譯生成的 .class 檔案,所以安裝相應的反編譯外掛,反編譯為 .java 檔案後,即可檢

解決jad.exe檢視外部jar原始碼失敗問題

上面這個網址說的非常詳細,我提幾個重點注意的地方:1.刪除eclipse的安裝目錄下configuration目錄下org.eclipse.update檔案,如果不刪除,就算配置完全正確也沒有用。2.需要兩次重新啟動,第一次是將net.sf.jadclipse_3.3.0.j

Eclipse中如何快速檢視jar中 的class原始碼(將jd-gui整合在Eclipse中)

1、開啟eclispe,在eclipse的選單欄上選擇Help->Install New Software 2,點選Install New Softeware,進入如下視窗。3,在對話方塊中點選add按鈕,然後在彈出的對話方塊中輸入名字和下載連結(因為它在下載,時間可能

如何檢視 JAR 原始碼

Java 專案的編譯檔案經常被打包成 JAR(Java Archive,Java 歸檔檔案)檔案,當然,作為學習,有時候也非常想看到這個 JAR 被打包前的原始碼是怎麼樣的。 下面提供幾種檢視 JAR 包的原始碼方式。 環境 JDK 7+ Mav

Android封裝jar,把當前專案設定成module,封裝手機振動jar給unity呼叫

Android封裝jar包或者把當前專案設定成module操作步驟都一樣,此處以手機振動為例,封裝jar包給Unity平臺使用,具體如下: Android部分: 1.建立unity要呼叫的手機振動的類:PhoneVibrate package com.lin.phonevibrate;

Eclipse中新增Android系統jar

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Android 封裝jar,反射機制獲取資源

public class ResourceUtil {        public static int getLayoutId(Context paramContext, St

javap命令檢視jarclass編譯版本

版本對照如下: Java 1.2 uses major version 46 Java 1.3 uses major version 47 Java 1.4 uses major version 48 Java 5 uses major version 49 Jav

eclipse自動下載jar原始碼

maven(推薦) maven可以用於專案對jar包的依賴關係的管理以及class, src, javadoc的下載。 Apache Maven is a software project mana

[Android] 解決androidjarR衝突問題

【問題描述】 今天在開發專案時,遇到一個詭異的問題:一個App工程下明明有a.xml檔案,但在OnCreate回撥裡進行 setContentView設定對應的layout時,卻一直顯示找不到對應的資源。開始以為是沒有重新編譯造成衝突引起 的,後來重新編譯了整個工程還是存在

linux檢視jar內檔案命令

jar vtf  fileName.jar 用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...選項包括:    -c  建立新的歸檔檔案    -t  列出

Android studio jar生成方式

Right im not sure if it will work for others but worked for me. I changed proxyPort to 8080 and used jcenter instead of Maven. But i had to apply expeptio

Androidjar方式共享資源注意事項

最近的一個專案是一個Android系統的系統應用的重構開發,專案中有很多個應用,這些 應用有許多相同的介面和互動;另外,這一套應用的介面可能會需要經常調整來適配不同的客戶需求。為了減少開發和維護的工作