Je viens juste de commencer et Shiro expérimentation a été d'essayer le code de SecurityManager from an INI resource quand je rencontraisLorsque vous essayez de lancer Shiro SecurityManager de ressources INI, java.lang.ClassNotFoundException rencontré: org.apache.commons.logging.LogFactory
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
Extended Message:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:154)
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:113)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:64)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:60)
at org.apache.commons.beanutils.ContextClassLoaderLocal.get(ContextClassLoaderLocal.java:154)
at org.apache.commons.beanutils.BeanUtilsBean.getInstance(BeanUtilsBean.java:76)
at org.apache.commons.beanutils.PropertyUtilsBean.getInstance(PropertyUtilsBean.java:107)
at org.apache.commons.beanutils.PropertyUtils.getPropertyDescriptor(PropertyUtils.java:498)
at org.apache.shiro.config.ReflectionBuilder.isTypedProperty(ReflectionBuilder.java:409)
at org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:702)
at org.apache.shiro.config.ReflectionBuilder.applySingleProperty(ReflectionBuilder.java:364)
at org.apache.shiro.config.ReflectionBuilder.applyProperty(ReflectionBuilder.java:325)
at org.apache.shiro.config.ReflectionBuilder$AssignmentStatement.doExecute(ReflectionBuilder.java:955)
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 core.Server.testShiro(Server.java:121)
at core.Server.main(Server.java:57)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 25 more
Mon code est indiqué par core.Server.testShiro(Server.java:121)
:
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
Je pense, il y a un problème avec le fichier shiro.ini I spécifié dans la ligne de code précédente Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
et basé sur le message d'erreur, semble que la beanutils
est la bibliothèque qui a besoin de la classe org.apache.commons.logging.LogFactory
Ma question n'est pas comment corriger le shiro.ini, mais plutôt comment résoudre le ClassNotFoundException.
Notez que j'utilise log4j2 et ont déjà inclus les pots de log4j2, ainsi que les adaptateurs relais de SLF4J (je crois comprendre que Shiro besoin ces) pots dans ma bibliothèque:
- log4j-api-2.8 .2.jar
- log4j-core-2.8.2.jar
- log4j-slf4j-impl-2.8.2.jar
- slf4j-api-1.7.25.jar
que ainsi que des pots Hibernate
J'ai fait quelques recherches et j'ai vu la réponse de Les Hazlewood à la question java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory du site de l'utilisateur de Shiro pour regarder explicitly excluding JCL. Les trois options indiquées du site dirigé ne s'appliquent pas vraiment car je n'utilise pas de projet Maven-is, juste un projet java autonome dans Netbeans. Cependant, j'ai essayé d'inclure commons-logging-1.2.jar
et jcl-over-slf4j-1.7.25.jar
dans mon dossier de lib (que j'ai recueilli est semblable à l'instruction de «fournir la portée» du site) mais cela ne résout pas l'exception.
J'ai également essayé d'inclure log4j-jcl-2.8.2.jar
dans mon dossier lib, mais la même exception ne disparaît toujours pas.
Toute aide et conseil seront très appréciés. Merci d'avance! À votre santé.