有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将所有包名重命名为小写

我有一个很大的项目,其中有很多包都是CamelCase的。我想将它们全部重命名为小写,例如:

main.MyPackages.Utilsmain.mypackages.utils


最好/最快的方法是什么

  1. 我考虑的第一种方法是使用IDE(Eclipse) 在我的情况下),但这是一个很大的工作,并不总是工作 因为在某些情况下,它认为包已经存在
  2. 第二种方法是自己编写一个程序来处理 这程序应将所有文件夹重命名为小写并替换 java文件中的所有导入语句都使用小写包。 听起来比实际情况更简单,因为重命名/移动非空目录需要一些额外的工作,而且在Windows上,不可能使用Java创建具有小写名称的新目录

有没有比上述两种方法更好的方法?如果不是,我将采用第二种方法。也许使用UNIX操作系统会更好


共 (3) 个答案

  1. # 1 楼答案

    可以使用中间包名称通过两个步骤执行此操作:

    • 右键单击包main.MyPackages.Utils,然后选择重构->;重命名
    • 输入main.mypackages2.utils2(如果有子包,请选中Rename subpackages),然后单击确定

    现在重复同样的步骤,并将main.mypackages2.utils2重命名为main.mypackages.utils

  2. # 2 楼答案

    在我的例子中,我使用IntelliJ Idea,上面提到的重构要容易得多。 您只需右键单击并更改您提到的包名,这将在使用包名的每个位置更新包名。 让我知道它是否有效。 See the screenshot for reference

  3. # 3 楼答案

    使用Eclipse重命名所有包:

    我尝试使用Eclipse重命名这些包。很快我就面对了这种方法的问题。我的本地分支中主分支的第一次合并再次恢复了所有旧包。当时的想法是在没有人参与项目的周末重新命名软件包。但每个分支仍然需要5个多小时,我必须至少更改主分支和最后一个发布分支,以防止合并冲突。我意识到这在我的情况下不起作用

    使用自定义Java程序重命名所有包:

    我编写了一个Java程序,执行以下步骤:

    1. 在所有目录的第一次迭代中,它将所有文件夹复制到一个只有小写名称的新目录中(第一个子包被完全重命名以防止Windows主机出现问题)
    2. 然后,程序在新目录中开始第二次迭代,并重命名Java文件中的所有导入包。对于大多数导入来说,这非常简单,但我需要使用反射来正确重命名静态导入和Java类中的枚举导入,例如import my.package.MyClass.MyEnum
    3. 该程序的下一步是重命名Eclipse中发现的所有其他旧包名称,例如TestNG XML文件
    4. 最后一步是删除旧文件夹

    程序的运行时间大约为每个分支2分钟。更新后的项目已编译,我没有遇到任何问题


    我没有添加任何代码,因为该程序仅适用于此项目。也许这对某人还是有帮助的