【问题标题】:Force .java to .class compilation [closed]强制.java到.class编译[关闭]
【发布时间】:2012-07-15 04:04:00
【问题描述】:

我对 java 编译器的理解遇到了一些问题。

如果您了解 Minecraft,您可能知道游戏中有许多 mod,它们是注入原始 .jar 中的修改类片段,替换旧(原始).class,问题是如果您想使用 2 个不同的 mod 替换相同的 .class,这有点不可能,除非你将它们的代码混合并做一些版本。

好吧,我得到了 2 个使用相同 .class 的模块,并反编译了两个类(反编译成功),分析、修改并创建了一个同时适用于两个模块的 .java 文件。我现在的问题是我必须将这个 .java 重新编译成一个 .class 文件,这样我才能注入到 minecraft .jar 中,但是每次我尝试编译它时,都会出现很多错误,例如class, interface, or enum expected 和 @ 987654322@ 这些错误是意料之中的,因为代码中提到了很多外部类,实际上并没有包含 main 类型。

我想知道你们中是否有人知道将 .java 转换为 .class 二进制文件,而忽略我之前提到的所有错误,或者如果您有任何其他关于如何操作的建议我可以吗?

PS:这段代码不是一个完整的程序,这就是为什么我得到这些错误,在.jar中它会很好地工作,请不要回答单独编译这个文件是没有意义的。

【问题讨论】:

  • 所以只需将原始jar文件(和所需的jar文件)添加到class-path进行编译,然后使用winrar之类的东西替换jar文件中创建的类。
  • 感谢您的快速回复,但是如何使用 javac 将 jar 添加到类路径中?
  • @Kasama javac -classpath jarfile1.jar:jarfile2.jar:jarfile3.jar:. ClassToCompile.java。 (注意:如果这是在 Windows 上,请使用 ; 而不是 :。)
  • 我只是尽我所能使用类路径中的原始 jar 来编译它,但仍然出现相同数量和类型的错误,我做了javac -cp minecraft.jar bg.java。我的世界使用的类混淆是否与它有关?
  • 还尝试包含 minecraft.jar javac -cp minecraft.jar:jinput.jar:lwjgl.jar:lwjgl_util.jar bg.java 的所有依赖项(注意:我使用的是 Ubuntu,所以它是 ':')仍然出现错误

标签: java class module compilation minecraft


【解决方案1】:

我想知道你们中是否有人知道将 .java 转换为 .class 二进制文件,忽略所有错误...

这是不可能的。如果 Java 源代码中有错误,则不能“强制”编译它,听起来这就是问题所在。

  • Java 反编译器生成无效 Java 源代码的输出并不罕见。

  • 如果您在“分析、修改、创建”中犯了错误,您的源代码可能无效……尤其是在您似乎没有 Java 编程经验的情况下。


如果您发布 actual 源代码 sn-ps,以及 actual 编译错误,我们或许可以提供帮助。


跟进

我有java编程经验,只是我使用Eclipse为我编译东西,所以我从不通过命令行使用javac。

这不是问题。如果您尝试使用 Eclipse 编译此代码,您会遇到同样的问题。

如果无法重新编译出现错误的类,我可以使用一些解压缩反编译的程序编辑 .jar 中的类,显示代码以便我可以再次编辑和打包它吗?

理论上,是的。在实践中,您需要对字节码以及编译代码的工作方式有很好的理解才能实现这一点。特别是,如果你弄错了,你可能会在类加载时遇到神秘的异常。

输入类被混淆的事实部分解释了为什么反编译器难以生成可编译代码。

【讨论】:

  • 我有java编程经验,只是我使用Eclipse为我编译东西,所以我从不通过命令行使用javac。如果无法重新编译出现错误的类,我可以使用一些解压缩反编译的程序在 .jar 中编辑一个类,显示代码以便我可以再次编辑和打包它吗?但我想我找到了一种使用 minecraft 编码器包(mcp50)的方法,现在我只需要知道混淆的 bg.class 代表什么 .java 文件。无论如何谢谢=)
猜你喜欢
  • 2011-03-27
  • 2011-03-22
  • 2013-08-17
  • 2013-04-12
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多