在android api 22中使用带有log4j 2.7的maven jar java 8获取java.lang.nullpointerexception:尝试获取空数组的长度

kkih6yb8  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(231)

我有一个maven项目,它使用log4j进行日志记录。这是我的pom.xml

<!-- Log4J Bridge -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.7</version>
</dependency>
<!-- Log4J 2 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.7</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.7</version>
<dependency>

在我使用logger的课程中,我会:

private static final Logger LOGGER = LoggerFactory.getLogger(App.class);

然后在方法上

LOGGER.debug("Logger works");

它工作得很好。现在,如果我从这个项目构建一个jar,将它安装在本地maven repo中,并将其导入android项目(api 22),那么在运行时就会出现这个错误
引起原因:java.lang.nullpointerexception:尝试在org.apache.logging.log4j.util.reflectionutil$privatesecuritymanager.getcallerclass(reflectionutil)获取空数组的长度。java:317)在org.apache.logging.log4j.util.reflectionutil.getcallerclass(reflectionutil。java:225)在org.apache.logging.slf4j.log4jloggerfactory.getcontext(log4jloggerfactory)。java:42)在org.apache.logging.log4j.spi.abstractloggeradapter.getlogger(abstractloggeradapter。java:42)在org.apache.logging.slf4j.log4jloggerfactory.getlogger(log4jloggerfactory。java:29)在org.slf4j.loggerfactory.getlogger(loggerfactory。java:363)在org.slf4j.loggerfactory.getlogger(loggerfactory。java:388)
我在stackoverflow上读了更多的帖子,但我还没有找到解决方案。我在manifest.xml中添加了这个

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

在调试代码时,我发现在java.lang.securitymanager类中,getsecuritycontext方法总是返回null。

public Object getSecurityContext() {
    return null;
}

有什么帮助吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题