Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java到类编译_Java_Class_Module_Compilation_Minecraft - Fatal编程技术网

java到类编译

java到类编译,java,class,module,compilation,minecraft,Java,Class,Module,Compilation,Minecraft,我在理解java编译器时遇到了一些问题 如果你知道Minecraft,你可能知道游戏中有很多mod,这些mod是注入原始.jar中的修改类的一部分,用来替换旧的(原始的).class,问题是如果你想使用两个不同的mod来替换相同的.class,这是不可能的,除非你把它们的代码都混在一起,做一些编辑 我得到了两个使用相同.class的mod,并对这两个类进行了反编译(反编译成功),分析、修改并创建了一个同时适用于这两个mod的.java文件。我现在的问题是,我必须将这个.java重新编译成一个.c

我在理解java编译器时遇到了一些问题

如果你知道Minecraft,你可能知道游戏中有很多mod,这些mod是注入原始.jar中的修改类的一部分,用来替换旧的(原始的).class,问题是如果你想使用两个不同的mod来替换相同的.class,这是不可能的,除非你把它们的代码都混在一起,做一些编辑

我得到了两个使用相同.class的mod,并对这两个类进行了反编译(反编译成功),分析、修改并创建了一个同时适用于这两个mod的.java文件。我现在的问题是,我必须将这个.java重新编译成一个.class文件,这样我就可以将它注入到minecraft.jar中,但是每次我尝试编译它时,我都会遇到很多错误,比如
类、接口或enum expected
,而
选择不包含主类型
这些错误是预期的,因为代码提到了很多外部类,实际上并不包含main类型

我想知道你们中是否有人知道如何将.java转换成一个.class二进制文件,忽略我之前提到的所有错误,或者你们是否对我如何做有其他建议

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

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

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

  • Java反编译器生成的输出不是有效的Java源代码,这并不罕见

  • 如果您在“分析、修改、创建”中出错,您的源代码可能无效。。。特别是如果您似乎没有Java编程经验


如果您发布actual源代码片段和actual编译错误,我们可能会提供帮助


跟进


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

这不是问题所在。如果您试图用Eclipse编译这段代码,也会遇到同样的问题

如果不可能重新编译一个有错误的类,我可以用一些解压反编译的程序在.jar中编辑一个类,显示代码,这样我就可以编辑并重新打包它了吗

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


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

所以只需将原始jar文件(以及所需的jar文件)添加到类路径中进行编译,然后使用类似winrar的东西替换jar文件中创建的类。感谢您的快速回复,但是如何使用javac将jar添加到类路径?@Kasama
javac-classpath-jarfile1.jar:jarfile2.jar:jarfile3.jar:。ClassToCompile.java
。(注意:如果这是在Windows上,请使用
而不是
)我只是尽我所能使用类路径中的原始jar来编译它,但仍然有相同数量和类型的错误,我没有使用
javac-cp minecraft.jar bg.java
。minecraft使用的类混淆与此有关吗?还试图包括minecraft.jar的所有依赖项javac-cp minecraft.jar:jinput.jar:lwjgl.jar:lwjgl_util.jar bg.java(注意:我在使用Ubuntu,所以它是“:”)仍然会出错我有java编程的经验,只是我使用Eclipse为自己编译东西,所以我从不通过命令行使用javac。如果不可能重新编译一个有错误的类,我可以用一些解压反编译的程序在.jar中编辑一个类,显示代码,这样我就可以编辑并重新打包它了吗?但是我想我找到了一种使用minecraft编码器包(mcp50)的方法,现在我只需要知道模糊化的bg.class代表的.java文件。无论如何,谢谢=)