【问题标题】:Use my class rather than from a JAR使用我的课程而不是 JAR
【发布时间】:2015-10-19 11:55:54
【问题描述】:

我有一个类com.example.TestClass,它在一个JAR 档案中。现在,在我的项目(使用前面提到的 JAR)中,我想使用该类的修改版本。

到目前为止,我尝试的是在我的项目的src 目录中创建完全相同的类和包,因为我希望它会在类加载期间使用,但不幸的是,这不起作用。

我已经阅读过有关 Javaassist 的信息,但除非绝对必要,否则我只想恢复它。

你有什么建议吗?

【问题讨论】:

  • 嗯,你当然可以创建类,但在不同的包中,或者创建相同的子类,甚至创建带有更新代码和版本号的 jar
  • 子类化不是一个选项,因为我想基本上使用我的测试类版本,即使在 JAR 中。
  • 您在使用 Eclipse 吗?检查项目中导入的顺序。
  • 让我理解您的问题。您的类路径中有同一个类的 2 个版本,并且您想在其中加载一个特定版本。这是你需要的吗?

标签: java class classloader


【解决方案1】:

您的类路径顺序似乎有问题。

在 Eclipse 中更改类路径顺序

  • 进入您的项目属性 > 构建路径
  • Order and Export 选项卡中,找到您的 src 文件夹,然后按 Up 按钮将其按类路径顺序向上移动。一直按 Up 直到它位于您的 JAR 上方。
  • 确定

在 Intellij IDEA 中更改类路径顺序

  • 打开项目结构Ctrl + Alt + Shift + S文件 > 项目结构)。
  • 选择左侧Project Settings下的Modules
  • 在中间窗格中选择相关模块。
  • 排列依赖关系列表的顺序。确保您的 Module Source 高于其他依赖项。

【讨论】:

  • 我的顺序正确,但必须将源代码移到我的库下方,然后再次将其移到库上方并重建所有内容。谢谢,成功了!
【解决方案2】:

也许您可以确保您的 TestClass 位于类路径的第一个位置。 看这里:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 2018-04-01
    • 2010-12-27
    相关资源
    最近更新 更多