java - ClassNotFoundException : org. apache.shiro.web.env.EnvironmentLoaderListener

标签 java rest jersey web.xml shiro

我有基于 Jersey 和 Shiro 安全性的简单 RESTful 服务。
但当我尝试部署时,一切都崩溃了。

web.xml

<servlet>
    <servlet-name>Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>alexiuscrow.ws</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Application</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>ShiroFilter</filter-name>
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>ShiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

Gradle 依赖项:

dependencies {
    compile 'org.glassfish.jersey.core:jersey-server:2.19'
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.19'
    compile 'org.apache.shiro:shiro-core:1.2.3'
    compile 'org.apache.shiro:shiro-web:1.2.3'
}

输出:

18-Jul-2015 21:28:10.775 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.apache.shiro.web.env.EnvironmentLoaderListener
 java.lang.ClassNotFoundException: org.apache.shiro.web.env.EnvironmentLoaderListener
//...

怎么了?为什么无法部署?

最佳答案

您使用 Shiro 1.2.4 吗?并且您已包含 slf4j-api-1.7.12 ? (Shiro 需要 slf4j)

实际问题来自slf4j-api-1.7.12 它说:

Uncaught exception from servlet
java.lang.ExceptionInInitializerError
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:149)
    ...
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "createSecurityManager")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:382)

我的解决方案

我把slf4j-api-1.7.7

关于java - ClassNotFoundException : org. apache.shiro.web.env.EnvironmentLoaderListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494455/

相关文章:

authentication - 在Jersey Jax-rs Web服务上启用OAuth1支持

java - 如何通过 Java 代码创建和删除数据库、模式 PostgreSQL?

java - 在 Gson 的帮助下将 java 对象存储为共享首选项,而不是使用 SQLite? (安卓)

java - 如何在用户验证 key 下正确地将数据存储在实时数据库中?

java - 使用 getBean 而不是 Spring 中的方法注入(inject)

java - 如何向此 Spring Boot 代码添加新的 REST GET 操作?

rest - 如何使用 PUT 和 DELETE 进行 REST

java - 如何使用 JAXB 使用 Jersey 1.6 生成 JSON 输出

java - 如何使 Jersey Rest POST 请求同步

具有可编程调度程序的 Java 休息框架?