【发布时间】:2014-12-01 11:04:14
【问题描述】:
我想知道是否有办法编辑类文件中的代码?因为我似乎无法使用 cmd 将 java 文件编译成类文件,因为它总是会检测到错误。我正在使用的 Jar 文件已经有自己的现有类文件,我想用几行代码更新其中一个 .class 文件。但是当我从类文件中复制代码并将其与我添加的代码行一起放入java文件中,然后尝试使用cmd编译它时,每当我尝试编译它以生成类文件时,cmd都会产生错误。
这是否意味着我需要反编译整个 jar 文件并将其制成 java 文件,然后将其重新编译为类文件,然后再次将其制成新的 jar 文件,?为了实现我想要做的事情?
现在我正在使用这个 JCIFS jar 文件,我想在其中一个类文件中添加一些代码行。我将这个“https://code.google.com/p/android-smb-streaming/”作为指导,我发现这个人能够使用 jar 文件中现有类的相同代码行以及他自己添加的行来自定义/添加一个新的类文件代码。
我可以知道如何实现这一目标吗?谢谢。
【问题讨论】:
-
在编译器中创建 .class 会处理它,我们不能修改或编辑 .class 文件
-
那么我可以知道是否有任何可能的方法可以做到这一点,因为根据我发现并发布了上面的链接。我发现这个人已经创建了他自己的 .class,它与现有的 .class 文件具有相同的代码,只是他创建的这个新的 .class 文件在他创建的这个类中添加了一些新的代码行。所以我认为可以创建一个包含到 jar 文件中,但是每当我尝试将 java 文件编译为类文件时,它总是给我错误 T.T
-
你最好学会理解和修复你的错误。
-
也就是说,唯一的办法就是拥有整个java文件,然后把它变成一个jar文件?
-
有像 CGLIB 或 javassist 这样的工具,允许在 Java 类加载到内存后对其进行动态修补。你可以找到编译器的来源。所以是的,
.class文件 是 文件,您可以修补它们,.jar也是如此。但是您肯定不想这样做:如果编译器检测到错误,您要添加的代码可能会中断!
标签: java jar executable-jar smb