首页 > 解决方案 > 构建 Corda 示例项目时出现 log4j 错误

问题描述

当我在 windows (gradlew.bat deployNodes) 上使用 gradle 构建示例 corda 项目时,我在 log4j 中看到有关 DELETE 命令的错误:

2019-10-28 16:30:47,207 主要错误删除包含无效属性“IfFileName”、“IfLastModified” 2019-10-28 16:30:47,213 主要错误缺少删除条件:不支持无条件删除 2019-10-28 16: 30:47,217 主要错误无法在类 org.apache.logging.log4j.core.appender.rolling.action.DeleteAction 中调用元素删除的工厂方法:java.lang.IllegalArgume ntException:不支持无条件删除 java.lang.reflect。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect 的 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 的 InvocationTargetException。 org.apache.logging.log4j.core 中的 Method.invoke(Method.java:498)。org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:964) 中的 org.apache.logging.log4j.core 中的 config.plugins.util.PluginBuilder.build(PluginBuilder.java:136)。 org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:896) 在 org.apache.logging.log4j.core.config.AbstractConfiguration 的 config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:904)。 createConfiguration(AbstractConfiguration.java:896) 在 org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:896) 在 org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration. java:514) 在 org.apache.logging.log4j.core.config.AbstractConfiguration。在 org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250) 在 org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java: 548)在 org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:620) 在 org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:637) 在 org.apache.logging .log4j.core.LoggerContext.start(LoggerContext.java:231) 在 org.apache.logging.log4j.core.async.AsyncLoggerContext.start(AsyncLoggerContext.java:76) 在 org.apache.logging.log4j.core.impl .Log4jContextFactory.getContext(Log4jContextFactory.java:153) 在 org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) 在 org.apache.logging。log4j.LogManager.getContext(LogManager.java:194) 在 org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:121) 在 org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java: 43) 在 org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46) 在 org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29) 在 org.slf4j.LoggerFactory.getLogger (LoggerFactory.java:358) 在 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383) 在 net.corda.core.utilities.KotlinUtilsKt.contextLogger(KotlinUtils.kt:42) 在 net.corda.cliutils.CliWrapperBase$同伴$logger$2.invoke(CordaCliWrapper.kt:108) 在 net.corda.cliutils.CliWrapperBase$Companion$logger$2.invoke(CordaCliWrapper.kt:107) 在 kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) 在 net.corda.cliutils.CliWrapperBase$Companion.getLogger(CordaCliWrapper.kt:65535) 在 net.corda.cliutils.CliWrapperBase$Companion.access$getLogger$p (CordaCliWrapper.kt:107) 在 net.corda.cliutils.CliWrapperBase.call(CordaCliWrapper.kt:142) 在 net.corda.cliutils.CliWrapperBase.call(CordaCliWrapper.kt:106) 在 picocli.CommandLine.execute(CommandLine. java:1173) 在 picocli.CommandLine.access$800(CommandLine.java:141) 在 picocli.CommandLine$RunLast.handle(CommandLine.java:1367) 在 picocli.CommandLine$RunLast.handle(CommandLine.java:1335) 在 picocli .CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:1243) 在 picocli.CommandLine.parseWithHandlers(CommandLine.java:1526) 在网上。corda.cliutils.CordaCliWrapperKt.start(CordaCliWrapper.kt:73) at net.corda.node.Corda.main(Corda.kt:13) 原因:java.lang.IllegalArgumentException:org.apache.logging 不支持无条件删除.log4j.core.appender.rolling.action.DeleteAction.(DeleteAction.java:71) 在 org.apache.logging.log4j.core.appender.rolling.action.DeleteAction.createDeleteAction(DeleteAction.java:212) ...还有 43 个还有 43 个还有 43 个

2019-10-28 16:30:47,606 主要错误为 DefaultRolloverStrategy 中的删除返回空对象。2019-10-28 16:30:47,736 主要错误删除包含无效属性“IfFileName”、“IfLastModified” 2019-10-28 16:30:47,737 主要错误缺少删除条件:不支持无条件删除 2019-10-28 16: 30:47,739 主要错误无法在类 org.apache.logging.log4j.core.appender.rolling.action.DeleteAction 中调用元素删除的工厂方法:java.lang.IllegalArgume ntException:不支持无条件删除 java.lang.reflect。在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 的 InvocationTargetException:

我得到了最新版本的corda样本。(来自主分支)。我在其他分支机构遇到同样的问题。我的 jdk 版本是 1.8.0_212。我使用了 cordapp-examples 项目

我怎么解决这个问题?

标签: corda

解决方案


在我看来,您似乎是从 Corda 构建指定的文件以外的地方提取 JAR 文件。

示例的默认分支是release-V4,这就是我正在使用的分支。我运行以下命令,它工作正常:

git clone https://github.com/corda/samples
cd cordapp-example
gradlew deployNodes

我会通过运行以下命令检查您的类路径变量是否未设置(因为这将导致在运行 Corda 时包含这些目录中的其他 JAR 文件):

echo %CLASSPATH%

此外,从命令行我会运行:

java -version
where java

为了确保您认为您正在使用的 java 版本您正在使用的版本。


推荐阅读