Проект Javadoc для Android в Eclipse завершается с ошибкой NullPointerException - PullRequest
19 голосов
/ 16 ноября 2011

Я пытаюсь сгенерировать комментарии Javadoc в Eclipse для моего проекта Android, но получаю исключение NullPointerException. Проблема возникает только тогда, когда я пытаюсь сгенерировать javadoc для классов, которые импортируют Библиотека совместимости Android (android.support), которую я прикрепил как внешний jar. Я также упоминаю Android 2.2 и несколько библиотечных проектов, но они не вызывают эту ошибку сами по себе.

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. Фактически, ни одно из предупреждений не говорит ничего похожего на «пакет android.support не существует». Это наводит меня на мысль, что javadoc находит библиотеку совместимости, но что-то, связанное с jar или способом, на который я ссылаюсь, вызывает ошибку, когда дело доходит до окончательного создания javadoc.

Любые идеи о том, что может быть причиной ошибки, приветствуются.

Ответы [ 3 ]

9 голосов
/ 18 ноября 2011

У меня была такая же ошибка.При выборе разных частей проекта в мастере ошибка иногда будет срабатывать, а иногда нет.

Во всяком случае, до этой ошибки было много предупреждений «пакет android. * Не существует», поэтому я решил сначала избавиться от них. Вот обходной путь , который работал для меня.

Теперь, когда исчезли эти предупреждающие сообщения, NullPointerException тоже исчез!Мне удалось сгенерировать javadoc для всего проекта, включая ссылки на библиотечные проекты, на которые есть ссылки, сторонние библиотеки jar и классы фреймворка Android.

1 голос
/ 16 ноября 2011

У меня была похожая проблема, и если я снял все, кроме src, ошибка исчезла.

0 голосов
/ 02 мая 2013

У меня был такой же стек вызовов с совершенно другим набором java-файлов и библиотек. Ошибка исчезла после того, как я заполнил путь к классам, чтобы включить все базовые классы, базовые интерфейсы и другие классы, на которые ссылались из javadoc. Поэтому исправление всех предупреждений «не удается найти символ» также исправило стек вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...