は、java.lang.ClassNotFoundExceptionが発生しました:org.apache.commons.logging.LogFactoryを
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
に遭遇したとき
SecurityManager from an INI resourceからコードをしようとしていた始めました
拡張メッセージ:
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
core.Server.testShiro(Server.java:121)
が述べた私のコードは次のとおりです。
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
私の推測では、私はコードFactory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
の前の行に指定され、エラーメッセージに基づいてshiro.iniファイルといくつかの問題があり、あるbeanutils
はorg.apache.commons.logging.LogFactory
クラス
私の質問は、shiro.iniを修正する方法ではなく、ClassNotFoundExceptionを解決する方法です。
- のlog4j-API-2.8:
注私はlog4j2を使用していますが、すでにlog4j2のjarファイルだけでなく、SLF4Jブリッジアダプタが含まれていること、私のライブラリ内のjarファイル(私の理解では、史郎はこれらを必要とするということです)
.2.jar
- log4jのコア-2.8.2.jar
- のlog4j-SLF4J-IMPL-2.8.2.jar
- SLF4J-API-1.7.25.jar
として
Shiroユーザーサイトの質問java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactoryにLes Hazlewoodさんからの回答がありました。explicitly excluding JCLを参照してください。私がMaven -izedプロジェクトを使用していないので、指示されたサイトから指定された3つのオプションは実際には適用されません。NetbeansのスタンドアロンJavaプロジェクトです。しかし、私はcommons-logging-1.2.jar
とjcl-over-slf4j-1.7.25.jar
を私のlibフォルダに集めようとしましたが(これは、サイトから「スコープの提供」命令に似ていますが)、例外を解決しません。
また、log4j-jcl-2.8.2.jar
をlibフォルダに含めようとしましたが、同じ例外が残っていません。
ご迷惑をおかけして申し訳ございません。前もって感謝します!乾杯。