Переименовать имя пакета Android не удается

Я нажимаю правой кнопкой мыши мой проект в eclipse, андроидных инструментах, 'Переименовать пакет приложений'.

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

Там я нахожу следующее:

eclipse.buildId=M20110210-1200
java.version=1.6.0_26
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=nl_BE
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product

Ошибка Пт июн 24 10:11:31 CEST 2011 Внутренняя ошибка

java.lang.reflect.InvocationTargetException
at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:91)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: org.eclipse.core.internal.resources.ResourceException: An error occurred while traversing resources.
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:83)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring.createChange(ApplicationPackageNameRefactoring.java:128)
at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:124)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
... 1 more
Caused by: java.lang.NullPointerException
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring.updateJavaFileImports(ApplicationPackageNameRefactoring.java:151)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring$JavaFileVisitor.visit(ApplicationPackageNameRefactoring.java:427)
at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112)
at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74)
... 7 more
Root exception:
org.eclipse.core.internal.resources.ResourceException(/Touring Mobilis)[566]: java.lang.NullPointerException
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring.updateJavaFileImports(ApplicationPackageNameRefactoring.java:151)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring$JavaFileVisitor.visit(ApplicationPackageNameRefactoring.java:427)
at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:112)
at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:110)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring.createChange(ApplicationPackageNameRefactoring.java:128)
at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:124)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)

Этот инструмент работает для всех? Если да, сообщите мне, какую версию затмения вы используете.

Я использую последние версии eclipse (64 бит) для Windows 7 с последним плагином ADT eclipse.

Ответ 1

У меня была та же проблема. Я просто не смог переименовать пакет, используя пакет > right click > rename package. Появились ссылки на пакеты в некоторых шаблонах xml, использование пользовательских элементов управления не обновлялось, поэтому файл R не мог быть сгенерирован. Посмотрев на xml и переименовав ссылки, был создан файл R, и я мог продолжить переименование.

Ответ 2

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

Чтобы решить проблему, вам нужно удалить класс или раскомментировать его.

Ответ 3

На самом деле я решил создать свой собственный инструмент переименования пакетов.

Это очень просто:

  • Замените AndroidManifest.xml на [packagename].
  • Замените [packagename].R во всех *.java файлах
  • Заменить SCHEMAS в xml файлах: http://schemas.android.com/apk/res/[packagename]

Затем я выбираю "не обновлять конфигурации запуска" и обновлять проект eclipse.

Все идет хорошо тогда:).

В сочетании с ветвями git и препроцессором антенны я могу получить гибкость, необходимую для выполнения многих версий приложения с различными параметрами.

Ответ 4

Попробуйте щелкнуть правой кнопкой мыши на пакете и выбрать "Refactor- > Rename", он отлично работает для меня, и никаких проблем не было. Надеюсь, это поможет.

Ответ 5

У меня были схожие проблемы при реорганизации/переименовании проектов с некоторыми версиями eclipse. Если вам понадобится быстрое исправление, я бы предложил это.

Создайте новое приложение для Android с именем, которое вы хотите продать на нем, и скопируйте файл исходного кода по файлу в новое приложение. Предупреждение: Не копируйте сами файлы, просто код в файлах, поскольку eclipse имеет некоторые метаданные, связанные с каждым файлом, и это может привести к ошибкам связывания.

Надеюсь, что это поможет.

Ответ 6

У меня была такая же ошибка в отношении "перемещения ресурсов". Я удалил ссылочную папку (она не была использована), и после этого я смог реорганизовать имя пакета.

Ответ 7

По-видимому, следующий способ может помочь вам переименовать.

1.Right Щелкните папку gen и переименуйте имя пакета в нужное место. Посмотрите изображение ниже.

enter image description here

2. После переименования вышеоткройте файл манифеста и измените объявление пакета на то, что вы хотите, но оно должно быть таким же, как пакет в папке gen, см. ниже.

enter image description here

Это должно быть так просто. Хорошее кодирование!

Ответ 8

ха-ха Причина этой ошибки заключается в следующем:

Caused by: java.lang.NullPointerException
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.ApplicationPackageNameRefactoring.updateJavaFileImports(ApplicationPackageNameRefactoring.java:151).

Итак, вам нужно проверить, не имеет ли один из ваших java файлов имя пакета.

Например:

//package com.telecom.request.login;
//
//import android.content.Context;
//import android.content.Intent;

Пакет моего java файла был прокомментирован, затем eclipse не может получить имя пакета файлов, выдается nullpointer.

Надеемся на помощь.