【问题标题】:Java - Load a class outside of classpath. What are the optionsJava - 在类路径之外加载一个类。有什么选择
【发布时间】:2014-08-08 19:09:01
【问题描述】:

我有一个被许多客户使用的 Java 产品。产品作为罐子添加到客户的(例如想要使用他的产品来满足他们的需求的 XYZ 公司)的代码库中并独立工作。它是一个独立的产品,所有客户端项目都依赖于(maven 依赖)这个产品(这又是几个 java 项目捆绑为一个带有许可证的 jar)

现在我处于使引擎使用其类路径之外的类的情况。这是一个客户端类,我不想将该类移动到产品代码库中并将其保留在外部但仍想使用它。

只是为了确认我对它进行了测试,并且它说没有按预期找到该类。我能想到的一种选择是将这些特定的类添加到我的产品的类路径中

他们还有其他更好的想法吗?

【问题讨论】:

  • 您应该在 jar 中由客户端类导出的属性。

标签: java maven dependencies classpath classloader


【解决方案1】:

我认为您有三个选择(编辑 -- 更多细节):

  1. 使用URLClassLoader从文件系统上的文件加载一个类:

    see this answer;

  2. 使用反射创建类:

    你仍然需要类在类路径中,或者你需要通过文件系统加载它(选项 1),see this

  3. 中途解决方案:你可以给你的独立产品添加一个接口,然后用反射创建你的实现类;我从来没有在生产中这样做过,我只是测试了代码并且它可以工作:see this question

【讨论】:

  • 谢谢..我会检查一下然后回来
  • @Shiv,我添加了一些细节
猜你喜欢
  • 1970-01-01
  • 2013-02-13
  • 2015-09-10
  • 2021-04-21
  • 2015-07-11
  • 2018-11-16
  • 1970-01-01
  • 2013-03-10
  • 2016-05-04
相关资源
最近更新 更多