0

好吧,我对 Java 不是很了解,我什至不知道这是否可能,但无论如何我都去了。我从 JAR 中获取了一个 .class 文件并对其进行了反编译。我已经将它编辑成我想要的,但现在我想重新编译它。是否可以重新编译那个 .java 文件,然后我可以将它放回 jar 文件中?当我尝试通过设置源路径来重新编译它时,它说我的文件引用的一个 .java 文件中存在错误(这是它的词吗?)即使没有。

编辑:反编译成功。重新编译时的错误:

C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\CraftServer.java:619: error: not a statement ex; ^ C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\CraftServer.java:629: 错误:不是语句 ex;^ C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\CraftServer.java:637: error: not a statement ex; ^ C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\CraftServer.java:646:错误:不是语句异常;^ C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\event\CraftEventFactory.java:194: 错误:表达式静态类 _cls1 的非法开始 ^ C:\Users\Sam\Desktop\DECOMP ~1\src\org\bukkit\craftbukkit\event\CraftEventFactory.java:215:错误:格式错误的浮点文字开关(org.bukkit.craftbukkit.event._cls1..SwitchMap.org.bukkit.event.block.Action[ action.ordinal()]) ^ C:

4

2 回答 2

0

进行此练习时,您需要确保两件事:

  1. 新源码反编译修改后是否有效?
  2. 源是否依赖于任何其他类?如果是这样,它们必须在类路径中javac

除了一些罕见的例外(取决于您要破解的内容),这应该足够了。

编辑

看来来源无效。以您的第一条错误消息为例:

C:\Users\Sam\Desktop\DECOMP~1\src\org\bukkit\craftbukkit\CraftServer.java:619: error: not a statement ex; ^ 

CraftServer.java第 619 行中有些东西不是声明。

PS,看了一下bukkit.org,好像这个软件是开源的。你真的需要反编译吗?

于 2012-07-13T03:04:03.993 回答
0

首先,您已删除所有语法错误,然后尝试设置该 jar 文件的类路径,然后编译您的文件,因为它可能使用该类文件中存在的类引用。

于 2012-07-13T04:23:08.737 回答