Что является вероятной причиной возникновения во время выполнения Android исключения «Нет подходящей реализации журнала», связанного с регистрацией в стороннем jar-файле? - PullRequest
1 голос
/ 07 апреля 2010

Я создаю приложение для Android, которое включает в себя стороннюю банку.Этот сторонний файл jar использует внутреннюю запись в журнал, которую не удается инициализировать при запуске приложения, с этой ошибкой: «org.apache.commons.logging.LogConfigurationException: Нет подходящей реализации журнала».

Судя по всему, jar использует org.apache.commons.logging и зависит от log4j, в частности, log4j-1.2.14.jar.Я упаковал банку log4j в приложение для Android.Jar стороннего производителя был упакован с файлом конфигурации log4j.xml, который я попытался упаковать в приложение как ресурс XML (а также как необработанный ресурс).

Сообщение об ошибке «Нет подходящей реализации журнала» не очень наглядно, и у меня нет непосредственного знакомства с журналированием Java.Поэтому я ищу вероятные причины проблемы (какие ресурсы класса или конфигурации я мог бы пропустить?) Или какой-либо метод отладки, который приведет к другому сообщению об ошибке, которое более явно о проблеме.У меня нет доступа к исходному коду для стороннего jar.

Вот трассировка стека исключений.Когда я запускаю приложение, я получаю следующее исключение, как только один из сторонних jar-классов пытается инициализировать свою внутреннюю запись в журнал.

DEBUG/AndroidRuntime(15694): Shutting down VM
WARN/dalvikvm(15694): threadid=3: thread exiting with uncaught exception (group=0x4001b180)
ERROR/AndroidRuntime(15694): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(15694): java.lang.ExceptionInInitializerError
ERROR/AndroidRuntime(15694): Caused by: org.apache.commons.logging.LogConfigurationException: No suitable Log implementation
ERROR/AndroidRuntime(15694):     at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:842)
ERROR/AndroidRuntime(15694):     at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:601)
ERROR/AndroidRuntime(15694):     at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:333)
ERROR/AndroidRuntime(15694):     at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:307)
ERROR/AndroidRuntime(15694):     at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:645)
ERROR/AndroidRuntime(15694):     at org.apache.commons.configuration.ConfigurationFactory.<clinit>(ConfigurationFactory.java:77)

1 Ответ

0 голосов
/ 07 апреля 2010

Это может помочь изучить логику вокруг org.apache.commons.logging.impl.LogFactoryImpl

Возможно, есть способ внедрить реализацию Log.

http://google.com/codesearch/p?hl=en#CskViEIa27Y/src/org/apache/commons/logging/impl/LogFactoryImpl.java&l=762

http://google.com/codesearch/p?hl=en#CskViEIa27Y/src/org/apache/commons/logging/impl/LogFactoryImpl.java&l=883

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...