从标题中可以看出,当我试图在代码中用ESAPI日志替换log4j/slf4j日志时,我得到了一个类强制转换异常。具体来说,它发生在以下方法中:
private Logger log()
{
return ESAPI.getLogger(getClass());
}
以下是特定于记录器的导入:
import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Logger;
让我感到惊讶的是,其他类中也有ESAPI日志记录,它工作得很好。根据我的理解,我认为如果log4j日志记录器已经到位并可以工作,那么将它替换为ESAPI将是一个简单的问题,因为它是它的扩展。我的log4j属性文件还定义了LoggerFactory--
log4j.loggerFactory=org.owasp.esapi.reference.Log4JLoggerFactory
你知道会发生什么吗?这只是一个简单的Java/Struts/Spring应用程序。
即使您使用的是ESAPI Log4jLoggerFactory,也使用了log4j记录器,但这并不意味着org.owasp.ESAPI.Logger就是org.apache.log4j.Logger。在那件事上甚至没有关系。ESAPI的记录器不是这样做的,因为它也被设计成支持java.util.logging.logger。作为设计决策的结果,org.owasp.esapi.logger是一个接口,因此您不能将其强制转换为任何内容。(也就是说,它既不扩展org.apache.log4j.logger也不扩展java.util.logging.logger,而是将实现更多地作为包装器来完成。)
当然,那并不能解决你的问题。如果您真的想使用它,您必须编写相当一部分代码来扩展ESAPI的记录器并使底层实现类可用,这在某种程度上违背了信息隐藏的观点。
也就是说,我不是在为设计决策辩护。它就是这样,那些关键的设计决策在我参与项目之前就已经做出了。
-凯文
MainActivity.java 对不起,我的英语很差。
问题内容: 我有。我想使用获得最大结果。这是我的代码: 这是我的: 现在我得到了。怎么了? 问题答案: 您的错误可能在以下行中: 其中query.list()返回BigInteger列表而不是Long列表。尝试将其更改为。
我不是一个设计师,但当我得到这个项目,我不能打开特别的一些屏幕,我认为他们是屏幕,我们只重用一些布局已经创建。不管怎么说谁能帮帮我吗?@override public void onBindViewHolder(@nonnull final ProductsAdapter.ViewHolder holder,final int position){String imageUrl=ProductsL
我有一个用java实现的Web服务项目,它还包含jsp页面。我在我的机器上的jetty 8.1.5上部署它,它可以正常工作。但是当我使用jetty 8.1.3在windows server 2003上部署时,它会出现此异常: 这是完整的跟踪: 知道这个异常是什么吗?以及如何修复它?
在我的应用程序中,我为gcm ccs(xmpp)运行这些代码,代码显示以下错误执行时出错,这是代码:
我正试图通过登录从报头中发送的API密钥对一个用户进行身份验证,而没有任何用户详细信息。然后,我会得到一个转换异常,因为我试图将主体转换为字符串。