如何通过Java代码更改包信息?
在我当前的Java项目中,我编写了一个Java程序,将一些Java文件从包“fr.inria.arles.pankesh.gen”复制到包“fr.inria.arles.pankesh.impl” 将Java文件从包“fr.inria.arles.pankesh.gen”复制到包“fr.inria.arles.pankesh.impl”后,由于Java文件的包信息更改,我的Java文件出现错误如何通过Java代码更改包信息?,java,Java,在我当前的Java项目中,我编写了一个Java程序,将一些Java文件从包“fr.inria.arles.pankesh.gen”复制到包“fr.inria.arles.pankesh.impl” 将Java文件从包“fr.inria.arles.pankesh.gen”复制到包“fr.inria.arles.pankesh.impl”后,由于Java文件的包信息更改,我的Java文件出现错误 我的问题是,“当我的程序将java文件从包“fr.inria.arles.pankesh.gen”复制
我的问题是,“当我的程序将java文件从包“fr.inria.arles.pankesh.gen”复制到包“fr.inria.arles.pankesh.impl”时,是否有任何方法(通过java代码,而不是手动)更改头中的包信息。”如果复制java源文件,您需要
包
关键字import
语句中查找“moved”类。如果找到它,则不需要复制导入,而是以正确的替换方式进行复制
当处理一个没有真正“移动”但需要更改的文件时,最好的策略是编写一个临时文件,然后在临时文件完全写入后用临时文件替换原始文件。如下所示:
(reading) MyClass.java
(writing) .tempMyClass.java
(done writing)
(moving) .tempMyClass.java to MyClass.java
这使您不受许多讨厌的项目的限制,例如在需要读取的文件中写入内容(这将在读取之前销毁所需的信息)
包java.io
和类java.lang.String
具有所有实用程序,可以让您编写这些工具,但要详细说明这篇文章太长了。试着写一点,在web上搜索(如何使用java读取文件中的行,如何使用java将行写入文件中)当你陷入困境时,发布代码说明你已经走了多远,以及你的具体错误或误解,很多人都会乐意帮助你
如果要对已编译的文件执行此操作,则需要读取java类文件格式的一些信息,并找到类名常量字符串,然后通过上面类似的过程对其进行更改(除了写入二进制字节),或者可以使用类似ASM的库来执行上面相同的过程(但也许可以避免手工操作时可能出现的错误)。如果复制java源文件,则需要
包
关键字import
语句中查找“moved”类。如果找到它,则不需要复制导入,而是以正确的替换方式进行复制
当处理一个没有真正“移动”但需要更改的文件时,最好的策略是编写一个临时文件,然后在临时文件完全写入后用临时文件替换原始文件。如下所示:
(reading) MyClass.java
(writing) .tempMyClass.java
(done writing)
(moving) .tempMyClass.java to MyClass.java
这使您不受许多讨厌的项目的限制,例如在需要读取的文件中写入内容(这将在读取之前销毁所需的信息)
包java.io
和类java.lang.String
具有所有实用程序,可以让您编写这些工具,但要详细说明这篇文章太长了。试着写一点,在web上搜索(如何使用java读取文件中的行,如何使用java将行写入文件中)当你陷入困境时,发布代码说明你已经走了多远,以及你的具体错误或误解,很多人都会乐意帮助你
如果要对已编译的文件执行此操作,则需要读取java类文件格式的一些信息,并找到类名常量字符串,然后通过上面类似的过程对其进行更改(除了写入二进制字节),或者可以使用类似ASM的库来执行上面相同的过程(但也许可以省去手工操作时可能犯的错误)。你可以通过大量的努力做到这一点