Eclipse中的Javadoc for Android项目因NullPointerException而失败

我试图在Eclipse中为我的Android项目生成javadoc注释,但我一直得到一个NullPointerException。 只有当我尝试为导入Android兼容性库 (android.support)的类生成javadoc时才会出现此问题,我已将其作为外部jar附加。 我还引用了Android 2.2和几个Library Projects,但这些不会导致这个错误。

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 mInsertedRecords; ^ RemoteUpdater.java:77: cannot find symbol symbol : class ContentValues location: class com.yellowbrickcode.restaurant.c2dm.RemoteUpdater private ArrayList 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.(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。 事实上,没有任何警告说任何类似“包android.support不存在”。 这让我相信javadoc正在寻找兼容性库,但是涉及jar的东西或我引用它的方式在最终的javadoc生成时会导致错误。

任何有关可能导致错误的想法都会受到赞赏。

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

无论如何,在那个错误之前有很多“包android。*不存在”的警告,所以我决定先摆脱这些。 这是适用于我的解决方法 。

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

我遇到了类似的问题,如果我取消选中除src之外的所有内容,则错误消失了。

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