org/apache/shiro/realm/AuthorizingRealm.class什么版本才有这个
时间: 2024-01-13 12:04:31 浏览: 148
类?
`org/apache/shiro/realm/AuthorizingRealm` 类是 Apache Shiro 框架中的一个类,从 Shiro 1.1.0 版本开始引入,用于实现授权相关的逻辑。如果你使用的是 Shiro 1.1.0 版本或以上的版本,就应该可以找到该类。如果你使用的是早期版本的 Shiro,可能没有该类或者该类的实现方式有所不同。建议使用最新版本的 Shiro 框架,以获得更好的功能和性能。
相关问题
class path resource [org/apache/shiro/realm/AuthorizingRealm.class] cannot be opened because it does not exist可能是jdk的版本问题吗
这个错误通常是因为在项目中缺少 AuthorizingRealm.class 文件导致的。这个问题通常不是由 JDK 版本引起的,而是由于项目的配置或依赖问题引起的。
建议你检查项目的依赖是否正确配置,并且确保该类在项目中存在。如果该类是由第三方依赖提供的,建议你尝试更新该依赖或者修改项目的依赖配置。如果问题仍然存在,可以考虑查看项目的日志或者详细的错误信息,以确定问题的具体原因。
SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details. Exception in thread "main" org.apache.shiro.config.ConfigurationException: Unable to instantiate class [org.apache.shiro.web.mgt.DefaultWebSecurityManager] for object named 'securityManager'. Please ensure you've specified the fully qualified class name correctly. at org.apache.shiro.config.ReflectionBuilder.createNewInstance(ReflectionBuilder.java:309) at org.apache.shiro.config.ReflectionBuilder$InstantiationStatement.doExecute(ReflectionBuilder.java:927) at org.apache.shiro.config.ReflectionBuilder$Statement.execute(ReflectionBuilder.java:887) at org.apache.shiro.config.ReflectionBuilder$BeanConfigurationProcessor.execute(ReflectionBuilder.java:765) at org.apache.shiro.config.ReflectionBuilder.buildObjects(ReflectionBuilder.java:260) at org.apache.shiro.config.IniSecurityManagerFactory.buildInstances(IniSecurityManagerFactory.java:167) at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:130) at org.apache.shiro.config.IniSecurityManagerFactory.createSecurityManager(IniSecurityManagerFactory.java:108) at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:94) at org.apache.shiro.config.IniSecurityManagerFactory.createInstance(IniSecurityManagerFactory.java:46) at org.apache.shiro.config.IniFactorySupport.createInstance(IniFactorySupport.java:123) at org.apache.shiro.util.AbstractFactory.getInstance(AbstractFactory.java:47) at com.xiu.Quickstart.main(Quickstart.java:26) Caused by: org.apache.shiro.util.UnknownClassException: Unable to load class named [org.apache.shiro.web.mgt.DefaultWebSecurityManager] from the thread context, current, or system/application ClassLoaders. All heuristics have been exhausted. Class could not be found. at org.apache.shiro.util.ClassUtils.forName(ClassUtils.java:152) at org.apache.shiro.util.ClassUtils.newInstance(ClassUtils.java:168) at org.apache.shiro.config.ReflectionBuilder.createNewInstance(ReflectionBuilder.java:302) ... 12 more
这个异常是因为 Shiro 框架没有找到 SLF4J(Simple Logging Facade for Java)的实现类,导致默认使用了 NOP(No-Operation)日志记录器实现。
可以通过以下几个步骤解决这个异常:
1. 确保在应用程序的 classpath 下存在 SLF4J 的实现类,比如 Logback、Log4j 等。
2. 确认应用程序中已经正确引入了 SLF4J 的依赖,比如以下 Maven 依赖:
```
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
```
3. 确认 SLF4J 的配置文件是否正确,比如 logback.xml 或者 log4j.properties 等。
如果以上步骤都没有解决问题,可以尝试修改 Shiro 的日志记录器实现类,比如使用 Logback 作为日志记录器实现:
```
# 修改 Shiro 的日志记录器实现类为 Logback
log4j.logger.org.apache.shiro=INFO, stdout
log4j.logger.org.apache.shiro.util.ThreadContext=INFO, stdout
log4j.logger.org.apache.shiro.realm=INFO, stdout
log4j.logger.org.apache.shiro.web=INFO, stdout
log4j.logger.org.apache.shiro.cache=INFO, stdout
log4j.logger.org.apache.shiro.session=INFO, stdout
# Logback 配置文件,可以将日志输出到控制台
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="org.apache.shiro" level="INFO"/>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
```
阅读全文