El proyecto Javadoc para Android en Eclipse falla con NullPointerException
android-support-library (3)
Estaba teniendo un problema similar y si desactivaba todo, excepto src
, el error desaparecía.
Estoy tratando de generar comentarios javadoc en Eclipse para mi proyecto de Android, pero sigo recibiendo una NullPointerException. El problema ocurre solo cuando trato de generar javadocs para las clases que importan la Biblioteca de compatibilidad de Android (android.support), que he adjuntado como un archivo externo. También hago referencia a Android 2.2 y a varios proyectos de la Biblioteca, pero esos no causan este error por sí solos.
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
El problema clave es el error en la parte inferior. - Las 100 advertencias solo implican un enlace a la documentación principal de la biblioteca de Android, que es un problema aparte que no causa el error sin referencia a android.support. De hecho, ninguna de las advertencias dice nada que se parezca al "paquete android.support no existe". Esto me lleva a creer que el javadoc está encontrando la biblioteca de compatibilidad, pero que algo relacionado con el tarro o la forma en que lo menciono está causando un error cuando se trata de la generación final de javadoc.
Cualquier idea acerca de lo que podría estar causando el error son apreciadas.
Tuve la misma pila de llamadas con un conjunto completamente diferente de archivos java y bibliotecas. El error desapareció después de que completé la ruta de clase para incluir todas las clases base, interfaces base y otras clases a las que se hacía referencia desde el javadoc. Así que arreglar todas las advertencias de "no se puede encontrar el símbolo" también corrigió la pila de llamadas.
Yo tenía el mismo error. Al seleccionar diferentes partes del proyecto en el asistente, el error a veces se dispararía y otras no.
De todos modos, antes de ese error hay una gran cantidad de advertencias de "paquete android. * No existe", así que decidí deshacerme de estos primero. Aquí está la solución que funcionó para mí.
Ahora, con estos mensajes de advertencia desaparecidos, ¡la NullPointerException
también desapareció! Pude generar javadoc para todo el proyecto, incluidos enlaces a proyectos de bibliotecas de referencia, archivos de bibliotecas de terceros y clases de marco de Android.