2011-11-16 10 views
19

Estoy intentando generar comentarios de 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 el Android Compatibility Library (android.support), que he adjuntado como un contenedor externo. También hago referencia a Android 2.2 y varios proyectos de biblioteca, pero estos no causan este error por sí solos.El proyecto Javadoc para Android en Eclipse falla con 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 

El problema clave es el error en la parte inferior. - Las 100 advertencias solo implican vincular a la documentación principal de la biblioteca de Android, que es un problema aparte que no incluye , sino que causa el error sin hacer referencia a android.support. De hecho, ninguna de las advertencias dice algo parecido a "el paquete android.support no existe". Esto me lleva a pensar que javadoc está buscando la biblioteca de compatibilidad, pero que algo relacionado con el jar o la forma en que lo hago referencia está causando un error cuando se trata de la generación final de javadoc.

Se agradecen todas las ideas sobre lo que podría estar causando el error.

Respuesta

9

Tuve el mismo error. Al seleccionar diferentes partes del proyecto en el asistente, a veces el error se dispara y otras no.

De todos modos, antes de ese error hay muchas advertencias de "paquete android. * No existe", así que decidí deshacerme de ellas primero. Here's the workaround que funcionó para mí.

Ahora, con estos mensajes de advertencia, el NullPointerException desapareció también. Pude generar javadoc para todo el proyecto, incluidos enlaces a proyectos de biblioteca referenciados, archivos jar de bibliotecas de terceros y clases de framework de Android.

1

Estaba teniendo un problema similar y si desactivé todo excepto src, el error desapareció.

+0

La generación de javadoc anterior solo genera para una clase, StartupActivity. Todo está desmarcado excepto para esa clase, aunque todavía intenta construir referencias a otras clases recursivamente. –

0

Tenía la misma bandeja de llamadas con un conjunto completamente diferente de bibliotecas y archivos java. El error desapareció después de completar el classpath para incluir todas las clases base, las interfaces base y otras clases a las que se hace 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.

Cuestiones relacionadas