2017-08-23 20 views
0
私は史郎をtriallingと私は

は、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ファイルといくつかの問題があり、あるbeanutilsorg.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.jarjcl-over-slf4j-1.7.25.jarを私のlibフォルダに集めようとしましたが(これは、サイトから「スコープの提供」命令に似ていますが)、例外を解決しません。

また、log4j-jcl-2.8.2.jarをlibフォルダに含めようとしましたが、同じ例外が残っていません。

ご迷惑をおかけして申し訳ございません。前もって感謝します!乾杯。

答えて

0

shiro-webを使用しているときに同じエラーが発生しました。すでにslf4jを使用しているので、jcl-over-slf4jにランタイム依存性を追加するだけです。私はちょうどそれを行い、それは例外を解決しました。それでもエラーが発生した場合は、何か正しいことをしていません。 jailを正しい場所に配置します。

jclブリッジとともにcommons-loggingを含めないでください。 jclブリッジをslf4jに使用するか、commons-loggingを使用するかはどちらもあまり意味がありません。

関連する問題