gpt4 book ai didi

java - 如何通过类路径用另一个 jar 修补一个 jar(替换类文件)

转载 作者:行者123 更新时间:2023-12-02 04:10:32 26 4
gpt4 key购买 nike

我有两个 jar 文件,一个是我的世界服务器 spigot.jar,另一个是我自己的 jar (patch.jar),其中包含几个小的自定义类。

patch.jar 中的类需要替换 spigot.jar 中的类,我已经阅读了大量“教程”和有关执行此操作的问题,但没有一个提供除了在启动脚本中使用类路径选项之外,甚至还有有关如何实际执行此操作的基本信息。

我已经尝试过:

  • -cp Spigot.jar Patch.jar:针对补丁抛出错误“无主 list ”,因为它没有 Main()。
  • -cp Spigot.jar; Patch.jar:输出 jvm 选项列表并关闭程序。
  • -jar Spigot.jar; Patch.jar:找不到 jar Spigot.jar;Patch.jar(我知道,这是一个远景)

我在 Patch.jar list 中创建了一个公共(public) void main()Main-Class,并且它运行了 main () 正确,然后退出而不加载插口。如果我将顺序切换为首先加载插头,它会正常加载并且永远不会触及我的补丁。

有人知道如何执行此操作或类似的操作吗?我的要求是,出于法律和技术原因,不得对龙头 jar 进行任何修改。我已经手动替换了 spigot.jar 副本中的类,以验证它们按预期工作,我的代码没有问题。

附注这不能成为插件的一部分,它是一个 mod 是有原因的,并且是支持一个非常大的插件的一部分,该插件在运行时更改数十个 NMS 类。这是为了修补一些在运行时无法通过反射修改的东西,或者只是以合理的方式更改变量类。

最佳答案

首先,如果您希望 Java 优先于原始类加载您的类,则 patch.jar 文件必须位于类路径中的原始 jar 文件之前。

并且您必须使用正确的命令行:

java -cp patch.jar;spigot.jar the.main.class.of.Spigot

要了解主类是什么,请打开 spigot.jar,然后检查其 list 文件:主类列在其中。

该文件还可以将其他 jar 文件列为依赖项。在这种情况下,您还必须将它们添加到类路径中。

关于java - 如何通过类路径用另一个 jar 修补一个 jar(替换类文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com