Java 重写类以加载项目类而不是 Jar 类

标签 java jar classloader

我有一个 jar,其中包含我想要修改的类。由于某种原因,我不想重新编译和更新 Jar。所以我所做的就是在我的项目中为该类重新创建一个完整的限定名称,并将我的代码放入其中,但我不知道如何确保 JVM 加载我的项目类而不是 Jar 类。 我浏览了一些帖子,但它们是关于如何将 Jar 类加载到项目中,而不是相反。

最佳答案

通常,您需要做的就是确保您的类位于类路径中包含您尝试覆盖的代码的 jar 之前。

如果您从命令行运行(将 : 替换为 ; 以在 Windows 上执行):

java -cp myproject.jar:their.jar com.package.Main

如果您使用的是 Eclipse,请右键单击项目 > 构建路径 > 配置构建路径...,然后选择“Order and Export”选项卡并确保您的项目源目录位于您要覆盖的 jar 之上在列表中。

关于Java 重写类以加载项目类而不是 Jar 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770549/

相关文章:

java - jar 中不播放声音

java - 如何创建一个不会在父级中搜索加载类的 ClassLoader

java - Java 中的素因数分解代码有什么问题?

java - org.hibernate.lazy 初始化异常

java - 当我们将信任管理器与 trustCertCollectionFile 一起使用时,Netty 会跳过主机名验证

java - 创建不包含外部依赖项的 JAR 文件

java - 如何使用 Maven 自动下载程序所需的依赖项?

java - 加载依赖于内部类的外部类

java - 如何从 JarClassLoader 和 Applet Launcher 调用返回字符串数据的 applet 方法

java - 在java中的相似类之间复制字段