我正在尝试在 OpenShift 上安装 Solr,部署 vanilla Solr war。我已经让它大部分工作了,但是日志记录抛出了一个 NoSuchMethodError 异常 b/c Solr 正在尝试使用 JBoss 的 log4j 版本 1.2.14 而不是 Solr 需要的 1.2.16(但是,两者都已加载)。
我已经调整了 catalina.properties (common.loader) 以加载 1.2.16,但我不知道如何明确地说“solr.war 应该使用 log4j-1.2.16”,或者通过更改 jar 加载的某些优先级或顺序。由于 OpenShift 写入限制,我不能只将 JBoss 版本升级到 1.2.16(我怀疑我应该这样做)。
有没有... a) 我可以进行配置更改以使 war 使用特定加载的 jar? b) 我应该把整个东西打包成一个 ear 文件吗? (我对此了解不多) c) 我应该尝试使用 Maven 为我构建和配置所有这些吗?如果是这样,我该如何开始?
最佳答案
你可以rsync来自
的文件{solr_code_base}/examples/lib/ext/
到
$OPENSHIFT_DATA_DIR/solrhome/lib
在您的本地仓库中,添加以下路径
common.loader=...,/var/lib/openshift/{#id}/app-root/data/solrhome/lib/*.jar
(将 {#id} 替换为您的 openshift 用户 ID)
在 .openshift/config/catalina.properties
中并将更改推送到 openshift。
并将{solr_code_base}/example/resources/log4j.properties
文件复制到.openshift/config/
对我有用
关于java - 如何让 war 使用与应用程序容器不同的 jar 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20407754/