Glassfish 上的 ESAPI Class 未找到错误

ESAPI Class Not Found Error on Glassfish

我刚刚开始尝试在我正在构建的 RESTFul 应用程序中使用 OWASP ESAPI class。

我按照他们在网站上的说明使用 svn 安装了 esapi 东西,但没有用。

然后我通过配置构建路径并将其添加为外部 JAR 文件来手动包含我需要的 jar 文件。然后它出现在 Java Resources\Libraries 文件夹中,所有内容都已编译和发布。我在 Eclipse 中使用 glassfish。

我不明白如果我能够编译代码,glassfish 没有 class 怎么办?我需要在服务器上安装 jar 吗?

相关代码为:

import org.owasp.esapi.ESAPI;

String clean = rs.getString(column_name); //saving column data to temp variable
clean = ESAPI.encoder().canonicalize(clean); //decoding data 
clean = ESAPI.encoder().encodeForHTML(clean); //encoding data

这是它抛出的错误:

2015-06-29T20:50:16.244+0100|Warning: StandardWrapperValve[Jersey Web     Application]: Servlet.service() for servlet Jersey Web Application threw exception
java.lang.NoClassDefFoundError: org/owasp/esapi/ESAPI
    at com.pododdle.util.ToJSON.toJSONArray(ToJSON.java:60)
    at com.pododdle.dao.MySQL.runDBQuery(MySQL.java:55)
    at com.pododdle.service.CategoryService.getAllCategories(CategoryService.java:10)
    at com.pododdle.resources.CategoryResource.getCategories(CategoryResource.java:22)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)

我通过将 esapi.properties 文件添加到 WEB-INF/classes 文件夹解决了这个问题。 (我必须创建这个 类 文件夹)

esapi.properties文件可以在esapi 1.4.4安装目录的"configuration"文件夹中找到

我认为您需要重新启动网络服务器,然后它才能顺利运行。

非常烦人的错误,我不知道为什么会这样,但是嘿!