2011-11-16 24 views
19

Tôi đang cố gắng tạo các nhận xét javadoc trong Eclipse cho Dự án Android của tôi, nhưng tôi tiếp tục nhận được một NullPointerException. Vấn đề xảy ra chỉ khi tôi cố gắng để tạo ra javadocs cho các lớp học nhập khẩu Android Compatibility Library (android.support), mà tôi đã đính kèm như một jar bên ngoài. Tôi cũng tham khảo Android 2.2 và một số Dự án Thư viện, nhưng những dự án này không gây ra lỗi này.Javadoc cho dự án Android trong Eclipse không thành công với NullPointerException

Loading source file /home/travisc/Desktop/Android/App/workspace/Restaurant/src/com/yellowbrickcode/restaurant/StartupActivity.java... 
Constructing Javadoc information... 
StartupActivity.java:3: package android.content does not exist 
import android.content.ContentValues; 
        ^
StartupActivity.java:4: package android.content does not exist 
import android.content.Intent; 
        ^
StartupActivity.java:5: package android.content does not exist 
import android.content.SharedPreferences; 
        ^
StartupActivity.java:6: package android.content.SharedPreferences does not exist 
import android.content.SharedPreferences.Editor; 
             ^
StartupActivity.java:7: package android.os does not exist 
import android.os.Bundle; 
       ^
StartupActivity.java:8: package android.preference does not exist 
import android.preference.PreferenceManager; 
         ^
StartupActivity.java:10: package android.view does not exist 
import android.view.Menu; 
       ^
StartupActivity.java:11: package android.view does not exist 
import android.view.MenuItem; 
       ^
StartupActivity.java:12: package android.view does not exist 
import android.view.View; 
       ^
StartupActivity.java:14: package android.view does not exist 
import android.view.ViewGroup; 
       ^
StartupActivity.java:15: package android.widget does not exist 
import android.widget.ImageButton; 
        ^
StartupActivity.java:27: cannot access android.app.Activity 
class file for android.app.Activity not found 
public class StartupActivity extends FragmentActivity { 
    ^
StartupActivity.java:29: cannot find symbol 
symbol : class OnClickListener 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    private OnClickListener mMenuListener = new OnClickListener() { 
      ^
StartupActivity.java:38: cannot find symbol 
symbol : class OnClickListener 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    private OnClickListener mAccountListener = new OnClickListener() { 
      ^
StartupActivity.java:49: cannot find symbol 
symbol : class OnClickListener 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    private OnClickListener mCheckinListener = new OnClickListener() { 
      ^
StartupActivity.java:68: cannot find symbol 
symbol : class Menu 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    public boolean onCreateOptionsMenu(Menu menu) { 
            ^
StartupActivity.java:74: cannot find symbol 
symbol : class MenuItem 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    public boolean onOptionsItemSelected(MenuItem item) { 
             ^
StartupActivity.java:80: cannot find symbol 
symbol : class Bundle 
location: class com.yellowbrickcode.restaurant.StartupActivity 
    protected void onCreate(Bundle savedInstanceState) { 
          ^
PushService.java:14: package org.json does not exist 
import org.json.JSONException; 
      ^
PushService.java:16: package android.app does not exist 
import android.app.AlarmManager; 
       ^
PushService.java:17: package android.app does not exist 
import android.app.IntentService; 
       ^
PushService.java:18: package android.app does not exist 
import android.app.Notification; 
       ^
PushService.java:19: package android.app does not exist 
import android.app.NotificationManager; 
       ^
PushService.java:20: package android.app does not exist 
import android.app.PendingIntent; 
       ^
PushService.java:21: package android.content does not exist 
import android.content.BroadcastReceiver; 
        ^
PushService.java:22: package android.content does not exist 
import android.content.Context; 
        ^
PushService.java:23: package android.content does not exist 
import android.content.Intent; 
        ^
PushService.java:24: package android.content does not exist 
import android.content.SharedPreferences; 
        ^
PushService.java:25: package android.content.SharedPreferences does not exist 
import android.content.SharedPreferences.Editor; 
             ^
PushService.java:26: package android.os does not exist 
import android.os.Binder; 
       ^
PushService.java:27: package android.os does not exist 
import android.os.IBinder; 
       ^
PushService.java:28: package android.os does not exist 
import android.os.SystemClock; 
       ^
PushService.java:29: package android.preference does not exist 
import android.preference.PreferenceManager; 
         ^
PushService.java:30: package android.util does not exist 
import android.util.Log; 
       ^
RemoteUpdater.java:13: package org.json does not exist 
import org.json.JSONArray; 
      ^
RemoteUpdater.java:14: package org.json does not exist 
import org.json.JSONException; 
      ^
RemoteUpdater.java:15: package org.json does not exist 
import org.json.JSONObject; 
      ^
RemoteUpdater.java:17: package android.content does not exist 
import android.content.ContentResolver; 
        ^
RemoteUpdater.java:18: package android.content does not exist 
import android.content.ContentValues; 
        ^
RemoteUpdater.java:20: package android.database does not exist 
import android.database.Cursor; 
        ^
RemoteUpdater.java:21: package android.database does not exist 
import android.database.SQLException; 
        ^
RemoteUpdater.java:23: package android.net does not exist 
import android.net.Uri; 
       ^
RemoteUpdater.java:24: package android.util does not exist 
import android.util.Log; 
       ^
PushService.java:54: cannot find symbol 
symbol: class IntentService 
public class PushService extends IntentService implements Saveable { 
           ^
PushService.java:681: cannot find symbol 
symbol : class Binder 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    protected class PushBinder extends Binder { 
            ^
PushService.java:178: cannot find symbol 
symbol : class Context 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public boolean clear(Context ctx) { 
         ^
PushService.java:190: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public IBinder onBind(Intent intent) { 
         ^
PushService.java:190: cannot find symbol 
symbol : class IBinder 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public IBinder onBind(Intent intent) { 
     ^
PushService.java:205: cannot find symbol 
symbol : class Context 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public boolean restore(Context ctx) { 
         ^
PushService.java:228: cannot find symbol 
symbol : class Context 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public boolean save(Context ctx) { 
         ^
PushService.java:254: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    protected void onHandleIntent(Intent intent) { 
           ^
PushService.java:357: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void receiveMessage(Intent intent) { 
           ^
PushService.java:393: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void receiveRegistration(Intent intent) throws JSONException { 
            ^
PushService.java:393: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void receiveRegistration(Intent intent) throws JSONException { 
                 ^
PushService.java:416: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void register(Intent intent) { 
         ^
PushService.java:456: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void retryAction(Intent intent) { 
          ^
PushService.java:498: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void unregister() throws JSONException{ 
            ^
PushService.java:523: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void unregisterServer(String regId) throws JSONException{ 
                ^
PushService.java:545: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void updateRegistration(Intent intent) throws JSONException { 
            ^
PushService.java:545: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    private void updateRegistration(Intent intent) throws JSONException { 
                 ^
RemoteUpdater.java:72: cannot find symbol 
symbol : class ContentValues 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private ArrayList<ContentValues> mInsertedRecords; 
        ^
RemoteUpdater.java:77: cannot find symbol 
symbol : class ContentValues 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private ArrayList<ContentValues> mInsertedMappings; 
        ^
RemoteUpdater.java:86: cannot find symbol 
symbol : class ContentResolver 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private ContentResolver mResolver; 
      ^
RemoteUpdater.java:97: cannot find symbol 
symbol : class ContentResolver 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    public RemoteUpdater(String authority, ContentResolver resolver) { 
             ^
RemoteUpdater.java:192: cannot find symbol 
symbol : class JSONObject 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private boolean updateNewsFeed(JSONObject serverData) { 
           ^
RemoteUpdater.java:207: cannot find symbol 
symbol : class JSONObject 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private boolean updateTable(JSONObject serverData, Uri authority, 
           ^
RemoteUpdater.java:207: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private boolean updateTable(JSONObject serverData, Uri authority, 
                ^
RemoteUpdater.java:208: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
      String table, String date) throws JSONException { 
              ^
RemoteUpdater.java:234: cannot find symbol 
symbol : class JSONObject 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private boolean updateMenu(JSONObject serverData) { 
          ^
RemoteUpdater.java:308: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private boolean commitUpdates(Uri authority, String table, String date) { 
           ^
RemoteUpdater.java:365: cannot find symbol 
symbol : class JSONArray 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
    private void parseRecords(JSONArray records, boolean delete) 
          ^
RemoteUpdater.java:366: cannot find symbol 
symbol : class JSONException 
location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater 
      throws JSONException { 
       ^
PushService.java:612: cannot find symbol 
symbol : class BroadcastReceiver 
location: class com.yellowbrickcode.restaurant.c2dm.PushService 
    public static class Receiver extends BroadcastReceiver { 
             ^
PushService.java:629: cannot find symbol 
symbol : class Context 
location: class com.yellowbrickcode.restaurant.c2dm.PushService.Receiver 
     public void onReceive(Context context, Intent intent) { 
          ^
PushService.java:629: cannot find symbol 
symbol : class Intent 
location: class com.yellowbrickcode.restaurant.c2dm.PushService.Receiver 
     public void onReceive(Context context, Intent intent) { 
              ^
SyncPreferences.java:10: package android.os does not exist 
import android.os.Bundle; 
       ^
SyncPreferences.java:11: package android.preference does not exist 
import android.preference.PreferenceActivity; 
         ^
SyncPreferences.java:23: cannot find symbol 
symbol: class PreferenceActivity 
public class SyncPreferences extends PreferenceActivity { 
            ^
SyncPreferences.java:27: cannot find symbol 
symbol : class Bundle 
location: class com.yellowbrickcode.restaurant.c2dm.SyncPreferences 
    protected void onCreate(Bundle savedInstanceState) { 
          ^
Provider.java:5: package android.content does not exist 
import android.content.ContentProvider; 
        ^
Provider.java:6: package android.content does not exist 
import android.content.ContentValues; 
        ^
Provider.java:7: package android.content does not exist 
import android.content.UriMatcher; 
        ^
Provider.java:8: package android.database does not exist 
import android.database.Cursor; 
        ^
Provider.java:9: package android.database.sqlite does not exist 
import android.database.sqlite.SQLiteDatabase; 
          ^
Provider.java:10: package android.graphics.drawable does not exist 
import android.graphics.drawable.Drawable; 
           ^
Provider.java:11: package android.net does not exist 
import android.net.Uri; 
       ^
Provider.java:12: package android.util does not exist 
import android.util.Log; 
       ^
Provider.java:41: cannot find symbol 
symbol: class ContentProvider 
public class Provider extends ContentProvider { 
          ^
Provider.java:51: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.database.Provider 
    public static final Uri CONTENT_URI = 
         ^
Provider.java:57: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.database.Provider 
    public static final Uri MENU_URI = Uri.withAppendedPath(CONTENT_URI, UpdateType.menu.toString()); 
         ^
Provider.java:62: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.database.Provider 
    public static final Uri NEWS_FEED_URI = Uri.withAppendedPath(CONTENT_URI, Table.NEWS_FEED.name); 
         ^
Provider.java:65: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.database.Provider 
    public static final Uri UPDATES_URI = Uri.withAppendedPath(CONTENT_URI, Table.UPDATE_LOG.name); 
         ^
Provider.java:70: cannot find symbol 
symbol : class Uri 
location: class com.yellowbrickcode.restaurant.database.Provider 
    public static final Uri IMAGE_URI = Uri.withAppendedPath(CONTENT_URI, Table.IMAGE.name); 
         ^
Provider.java:80: cannot find symbol 
symbol : class UriMatcher 
location: class com.yellowbrickcode.restaurant.database.Provider 
    private static final UriMatcher URI_MATCHER; 
         ^
DatabaseHelper.java:3: package android.content does not exist 
import android.content.ContentValues; 
        ^
DatabaseHelper.java:5: package android.database.sqlite does not exist 
import android.database.sqlite.SQLiteDatabase; 
          ^
DatabaseHelper.java:6: package android.database.sqlite does not exist 
import android.database.sqlite.SQLiteOpenHelper; 
          ^
DatabaseHelper.java:7: package android.graphics does not exist 
import android.graphics.Bitmap; 
        ^
DatabaseHelper.java:8: package android.util does not exist 
import android.util.Log; 
       ^
DatabaseHelper.java:21: cannot find symbol 
symbol: class SQLiteOpenHelper 
public class DatabaseHelper extends SQLiteOpenHelper { 
            ^
Standard Doclet version 1.6.0_23 
Building tree for all the packages and classes... 
java.lang.NullPointerException 
    at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:85) 
    at com.sun.tools.javadoc.TypeMaker.getType(TypeMaker.java:47) 
    at com.sun.tools.javadoc.ClassDocImpl.superclassType(ClassDocImpl.java:486) 
    at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:405) 
    at com.sun.tools.doclets.internal.toolkit.util.Util.getAllInterfaces(Util.java:443) 
    at com.sun.tools.doclets.internal.toolkit.util.ClassTree.processType(ClassTree.java:180) 
    at com.sun.tools.doclets.internal.toolkit.util.ClassTree.buildTree(ClassTree.java:132) 
    at com.sun.tools.doclets.internal.toolkit.util.ClassTree.<init>(ClassTree.java:91) 
    at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:123) 
    at com.sun.tools.doclets.internal.toolkit.AbstractDoclet.start(AbstractDoclet.java:83) 
    at com.sun.tools.doclets.formats.html.HtmlDoclet.start(HtmlDoclet.java:63) 
    at com.sun.tools.doclets.standard.Standard.start(Standard.java:41) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:291) 
    at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:165) 
    at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:374) 
    at com.sun.tools.javadoc.Start.begin(Start.java:162) 
    at com.sun.tools.javadoc.Main.execute(Main.java:59) 
    at com.sun.tools.javadoc.Main.main(Main.java:49) 
100 warnings 

Vấn đề chính là lỗi ở dưới cùng. - 100 cảnh báo chỉ liên quan đến việc liên kết đến tài liệu thư viện chính của Android, đây là vấn đề riêng biệt mà không không gây ra lỗi mà không tham chiếu đến android.support. Trong thực tế, không có cảnh báo nào nói như "gói android.support không tồn tại". Điều này khiến tôi tin rằng javadoc đang tìm thư viện tương thích, nhưng cái gì đó liên quan đến cái bình hoặc cách tôi tham khảo nó đang gây ra lỗi khi nói đến thế hệ javadoc cuối cùng.

Bất kỳ ý tưởng nào về những gì có thể gây ra lỗi được đánh giá cao.

Trả lời

9

Tôi đã gặp lỗi tương tự. Bằng cách chọn các phần khác nhau của dự án trong trình hướng dẫn, lỗi đôi khi sẽ kích hoạt và đôi khi không.

Dù sao, trước khi lỗi đó có rất nhiều "gói android. * Không tồn tại" cảnh báo, vì vậy tôi quyết định loại bỏ những điều này trước tiên. Here's the workaround làm việc cho tôi.

Bây giờ, khi các thông báo cảnh báo này biến mất, NullPointerException cũng biến mất! Tôi đã có thể tạo ra javadoc cho toàn bộ dự án, bao gồm các liên kết đến các dự án thư viện tham chiếu, các thư viện của bên thứ 3 và các lớp khung công tác Android.

1

Tôi đã gặp sự cố tương tự và nếu tôi bỏ chọn mọi thứ ngoại trừ src, lỗi sẽ biến mất.

+0

Thế hệ javadoc ở trên chỉ tạo ra cho một lớp, StartupActivity. Mọi thứ đều được bỏ chọn ngoại trừ lớp đó, mặc dù nó vẫn cố gắng xây dựng các tham chiếu đến các lớp khác một cách đệ quy. –

0

Tôi đã có cùng một callstack với một bộ hoàn toàn khác nhau của các tệp và thư viện java. Lỗi này biến mất sau khi tôi hoàn thành classpath để bao gồm tất cả các lớp cơ sở, các giao diện cơ sở và các lớp khác mà được tham chiếu từ javadoc. Vì vậy, sửa chữa tất cả các cảnh báo "không thể tìm thấy biểu tượng" cố định callstack là tốt.

Các vấn đề liên quan