繁体   English   中英

Domino OSGi插件引发的异常java.lang.NoClassDefFoundError:org.apache.commons.logging.Logfactory

[英]Exception Thrown java.lang.NoClassDefFoundError: org.apache.commons.logging.Logfactory from Domino OSGi Plugin

我正在构建一个IBM Domino OSGi插件,该插件打包了一个包含HttpServlet的类。

我想使用org.apache.httpcomponents.httpclient_4.2.3org.apache.httpcomponents.httpcore_4.2.3 (从OSGi包中提取)从Servlet进行Http调用( getpost等)。

我已将两个jar文件添加到domino\\jvm\\lib\\ext ,对java.policy file *进行了常规更改,并将这些jar添加到了构建路径。

当我添加代码以创建并使用DefaultHttpClient ,服务器将引发错误:

java.lang.NoClassDefFoundError: org.apache.commons.logging.Logfactory

我知道在Domino的Java实现中,日志记录是一个棘手的主题。 奇怪的是,我在运行正常的NSF包含的Servlet中运行了相同的代码。 但是在我的OSGi环境中,它坏了。 如果我使用包含/log.nsf/的URL调用servlet,它仍然会中断。

任何帮助表示感谢!

grant {
permission java.security.AllPermission;
};

我不确定为什么它可以在您的NSF实现中工作,但看起来您需要commons-logging-1.1.1.jar 这应该包含在httpcomponents下载中。 或者您可以从这里下载:

http://commons.apache.org/logging/download_logging.cgi

在XPages之前,我曾经遇到过org.apache软件包的问题,​​这主要是因为它们尝试登录到文件系统并且安全策略不喜欢这样。 将其添加为引用的库等,它使用与XPages运行时相同的ClassLoader,因此尝试使用服务器中的那个,即当您获得NoClassDefFoundError时。

尝试将其添加到OSGi插件的WebContent \\ WEB-INF \\ lib文件夹中。 在NSF中将其添加到该路径中是可行的,因为它使用了不同的ClassLoader。 它也可以很好地规避您在OSGi插件中遇到的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM