gpt4 book ai didi

java - Play 应用程序全局设置的混合

转载 作者:行者123 更新时间:2023-12-01 13:41:16 25 4
gpt4 key购买 nike

我有两个 Play 2.2.1 应用程序 X 和 Y。这两个应用程序在默认包中都有一个 Global 对象,该对象扩展 GlobalSettings 并覆盖 onStart。应用程序 X 在 Maven 存储库中发布,应用程序 Y 将 X 作为依赖项。当尝试运行应用程序 Y 时,我在 onStart 期间不断收到奇怪的异常。这些异常是由应用程序 X 的 onStart 函数中的代码引发的。我没有收到任何编译时错误或警告。

这是预期的吗?这是 Play 特有的问题还是每次默认包中的名称发生冲突时都会发生这种情况?如何防止应用程序的 GlobalSettings 混合在一起?

我最初将通用代码放入自己的项目中,两个 Play 应用程序作为依赖项共享该项目。这维护起来很烦人,而且所有共享代码确实属于应用程序 X,所以我重新组织了。

最佳答案

您看到的错误可能是由于您的类加载器中有多个 Global 对象,而加载的对象是未定义的。类加载器就像一个文件系统,给定目录中只能有一个给定名称的文件。如果您的类路径上有两个库,它们在同一目录中定义了具有相同名称的文件,则它们不会合并,而是一个会覆盖另一个,并且使用哪个库取决于类加载器实现 - 在 Play 中,我们特别不这样做定义顺序。

Global 对象必须由最终应用程序定义。任何打算作为依赖项使用的项目都不得定义 Global 对象。它应该在可以被全局对象使用的地方定义行为。如果它想在启动时透明地插入行为,请考虑实现 Plugin 接口(interface),如下所示:

http://developer.vz.net/2012/03/16/writing-a-play-2-0-module/

关于java - Play 应用程序全局设置的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20753886/

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