2011-11-16 77 views
19

我想在Eclipse中为我的Android项目生成javadoc注释,但我不断收到NullPointerException。只有当我尝试生成用于导入Android Compatibility Library(android.support)的类的javadoc时,才会出现问题,我已将它作为外部jar附加。我也参考了Android 2.2和几个图书馆项目,但这些并不会导致这个错误。Eclipse中的Javadoc for Android项目失败,出现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 

关键问题是底部的错误。 - 100条警告只涉及链接到主Android库文档,这是一个单独的问题,而不是导致错误,而不参考android.support。事实上,没有任何警告说任何类似“package android.support不存在”的东西。这让我相信javadoc正在寻找兼容性库,但涉及jar或我引用它的方式在最终的javadoc生成时会导致错误。

任何关于什么可能导致错误的想法,赞赏。

回答

9

我有同样的错误。通过在向导中选择项目的不同部分,错误有时会触发,有时不会。

无论如何,在这个错误之前,有很多“包android.*不存在”的警告,所以我决定先摆脱这些。 Here's the workaround为我工作。

现在,随着这些警告消息消失,NullPointerException也消失了!我能够为整个项目生成javadoc,包括引用的库项目,第三方库jars和Android框架类的链接。

1

我有一个类似的问题,如果我除了src之外没有检查一切,错误就消失了。

+0

上面的javadoc代只生成一个类,StartupActivity。除了那个类以外,所有的东西都没有选中,虽然它仍然试图递归地构建对其他类的引用。 –

0

我有一个完全不同的java文件和库集相同的调用堆栈。在完成类路径以包含所有基类,基接口和其他从javadoc引用的类之后,错误就消失了。所以修复所有的“找不到符号”警告也修复了callstack。

相关问题