【问题标题】:Conflicting warnings about location of wicket.properties in Wicket 7关于 Wicket 7 中 wicket.properties 位置的冲突警告
【发布时间】:2016-01-12 14:50:57
【问题描述】:

我有一个我们在公司使用的仪表板库。它有一个初始化器。 wicket.properties 文件与其余代码存储在同一个包中,而不是 META-INF 文件夹中。升级到 Wicket 7 后,我开始注意到以下警告:

/wicket.properties 位置已弃用。请将文件移动到 /META-INF/wicket/ 文件夹并给它一个与您的包名称匹配的名称,例如com.example.myapp.properties

所以我想,没问题,我会按照写得很好的消息中的说明移动属性文件并重命名它。我将文件重命名为 com.redi.wicket.dashboard.properties 并将其移至 META-INF/wicket 文件夹。现在我收到以下警告:

/META-INF/wicket/*.properties 在 OSGi 和单 jar 环境中不起作用,不再受支持!请参阅https://issues.apache.org/jira/browse/WICKET-5997 了解更多详细信息,并为仍在使用它的库报告问题。

我查看了 WICKET-5997、WICKET-6030 和 WICKET-5713 并试图拼凑出我应该做的事情。

我注意到在 Application 类中有一些已弃用的方法,其中一个是 collectWicketProperties,将在 7.3.0 中删除。所以我想在我脑海中浮现的时候解决这个问题,而不是在升级时让它咬我。

那么我应该把我的初始化属性文件放在哪里,我给它起什么名字呢?

谢谢

【问题讨论】:

标签: java wicket wicket-7


【解决方案1】:

我通过查看 org.apache.wicket.Application 的代码发现了这一点。在这里,开发人员提到您应该将 ServiceLoader 类用于 Initializers。 https://issues.apache.org/jira/browse/WICKET-5997。我注意到了 Application.initInitializers 方法,也看到了他们所说的 ServiceLoader 类。

所以我阅读了 java.util.ServiceLoader 类,它说明了以下内容:

通过在资源目录 META-INF/services 中放置一个提供者配置文件来识别服务提供者。该文件的名称是服务类型的完全限定二进制名称。该文件包含具体提供程序类的完全限定二进制名称列表,每行一个。

所以我创建了一个 META-INF/services 文件夹并放置了一个名为 org.apache.wicket.IInitializer 的文本文件,并在该文件中放置了我的 IInitializer 实现的完全限定类名。

警告消失了,我的初始化程序在应用程序启动时被调用,这正是我想要的。

注意:如果您从使用 wicket.properties 进行迁移,请确保取出文件的“initializer=”部分。新方法不是属性文件,因此它没有键值对。它只有完全限定的类名,由新行分隔。如果您需要更多详细信息,请参阅 java.util.ServiceLocator 文档。

此外,如果您使用的是 maven,META-INF/services 文件夹将位于 src/main/resources。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多