Java - 加载类路径之外的类。有什么选择

标签 java maven dependencies classpath classloader

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

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

只是为了确认我测试了它,它说未按预期找到该类。我能想到的一个选择是将这些特定的类打包并将其添加到我的产品的类路径中

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

最佳答案

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

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

    see this answer ;

  2. 使用反射创建类:

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

  3. 中间方式解决方案:您可以向独立产品添加接口(interface),然后使用反射创建实现类;我从未在生产中这样做过,我只是测试了代码并且它有效:see this question

关于Java - 加载类路径之外的类。有什么选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286379/

相关文章:

java - 从 JSF(任何前端)触发 Quartz 作业 - 如何等待作业执行结束

java - 如何使用 Maven 将 .jar 文件部署到 JBoss EAP6 服务器?

java.lang.NoSuchMethodError : org. apache.hadoop.tracing.TraceUtils.wrapHadoopConf 错误

java - 如何检测激活了哪些 Maven 配置文件?

android - 找到重复的类 com.google.android.gms.location.places.zza

android - 将 GitHub 库作为依赖项添加到 Android Studio 项目

java - 链接没有显着返回值的 Observable

java - 使用首选项 API 保存路径?

java - Maven 命名约定 32 位与 64 位以及 Windows 与 Linux

java - 取消 showInputDialog 时出错