重命名Android程序包名称失败

时间:2011-06-24 08:18:13

标签: android eclipse android-manifest adt

我在eclipse,android工具,'重命名应用程序包'中右键单击我的项目。

选择任何名称,它将失败,并将您引导至错误日志以获取详细信息。

我找到以下内容:

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

错误 星期五6月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)

此工具适用于任何人吗?如果是这样,请告诉我您正在使用的是哪个版本的日食。

我在Windows 7上使用最新版本的eclipse(64位)和最新的ADT eclipse插件。

8 个答案:

答案 0 :(得分:12)

你不能相信这一点。我有完全相同的问题,因为我完全评论了一个类。所以我认为当eclipse尝试更改注释类的包名时会抛出此错误。

要解决此问题,您只需删除该类或取消注释即可。

答案 1 :(得分:3)

我遇到了同样的问题。我只是无法使用包>重命名包。右键单击>重命名包。在某些xml模板中出现了包引用,使用自定义控件未更新,因此无法生成R文件。查看xml并重命名引用后,生成了R文件,我可以继续重命名。

答案 2 :(得分:1)

实际上我决定创建自己的包重命名工具。

事实上非常简单:

  • 将AndroidManifest.xml替换为[packagename]。
  • 在所有* .java文件中替换[packagename] .R
  • 在xml文件中替换SCHEMAS:http://schemas.android.com/apk/res/ [packagename]

然后我选择'不更新启动配置'并刷新eclipse项目。

一切顺利然后:)。

结合git分支和天线预处理器帮助我获得了执行多种版本的应用程序所需的灵活性。

答案 3 :(得分:0)

尝试右键单击包并选择Refactor-> Rename,它对我来说很好,从来没有遇到任何麻烦。希望这会有所帮助。

答案 4 :(得分:0)

我在使用某些版本的eclipse重构/重命名项目时遇到了类似的问题。如果您需要快速修复,我建议您这样做。

创建一个新的Android应用程序,其中包含您要将其推向市场的名称,并将源代码文件按文件复制到新应用程序中。 警告:不要复制文件本身,只复制文件中的代码,因为eclipse有一些与每个文件关联的元数据,这可能会导致链接错误。

希望这有帮助。

答案 5 :(得分:0)

我对“遍历资源”有同样的错误。我删除了引用的文件夹(它未被使用),之后我能够重构包名。

答案 6 :(得分:0)

显然,以下方法可以帮助您重命名。

1.右键单击gen文件夹并将包名重命名为您想要的名称。请参见下图。

enter image description here

2.重命名上面的内容后打开你的清单文件并将包装声明更改为你想要的,但它应该与gen文件夹中的包相同,见下文。

enter image description here

那应该是人们。快乐的编码!

答案 7 :(得分:0)

哈哈 这个错误的原因如下:

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出来了。

希望对你有所帮助。