漏洞的原理就不解释了,网上很多。这里写一下编译过程中报错的解决办法。
编译过程中可能遇到几个错误:
1、maven环境配置问题:
[ERROR] Please make sure you define the required toolchains in your ~/.m2/toolchains.xml file.
2、jdk版本错误:
[ERROR] jdk [ version='[11, )' ] 或者 : [ERROR] jdk [ version='[9, )' ]
我这是在win10下的操作步骤,有linux下的同学可参考类似的操作:
1、下载源文件:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2、解压到一个目录,我这里解压到 F:\code\log4j-2.15.0-rc2 下
3、打开cmd窗口,cd /d f:\code\log4j-2.15.0-rc2
4、运行maven的打包命令:mvn clean package -Dmaven.test.skip=true
结果报错:
[ERROR] Please make sure you define the required toolchains in your ~/.m2/toolchains.xml file.
解决办法:
1、安装相应版本的jdk
由于我的电脑只安装了jdk7和jdk8,当看到有jdk可能需要version=9时,我想到可能是需要新版本的jdk才能编译通过,于是偷个懒,干脆直接下载一个jdk17的最新稳定版本来编译,因为最新版一般是可以向下兼容的。下载地址:https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_windows-x64_bin.zip
下载完后解压出来,我的所有jdk版本都是安装在d:\jdk下,即d:\jdk\jdk7, d:\jdk\jdk8, d:\jdk\jdk17。
2、修改编译的配置文件:在源码目录有一个文件:toolchains-sample-win.xml,用编辑器打开后,在里面添加内容:(jdk路径根据实际情况修改)
<toolchain> <type>jdk</type> <provides> <version>1.7</version> <vendor>sun</vendor> </provides> <configuration> <jdkHome>D:\jdk\jdk7</jdkHome> </configuration> </toolchain> <toolchain> <type>jdk</type> <provides> <version>1.8</version> <vendor>sun</vendor> </provides> <configuration> <jdkHome>D:\jdk\jdk8</jdkHome> </configuration> </toolchain> <toolchain> <type>jdk</type> <provides> <version>9</version> <vendor>sun</vendor> </provides> <configuration> <jdkHome>D:\jdk\jdk17</jdkHome> </configuration> </toolchain> <toolchain> <type>jdk</type> <provides> <version>11</version> <vendor>sun</vendor> </provides> <configuration> <jdkHome>D:\jdk\jdk17</jdkHome> </configuration> </toolchain>
如果有其他版本的jdk,也可以添加进去。
网上有说需要修改maven配置目录下的conf\toolchains.xml文件,我没有修改,直接指定了toolchains的路径也编译通过。
3、重新编译打包:
需要指定打包时的jdk链路配置文件,在mvn命令行增加-t xxx.xml配置文件。这里是在当前目录下,所以使用用的是相对路径:
mvn clean package -t toolchains-sample-win.xml -Dmaven.test.skip=true
(命令行中的-t参数是用于指定jdk版本链路的配置文件路径)
至此,配置修改过程基本完成,可以泡杯咖啡等待编译和打包完成了,编译时需要下载很多依赖包,可能需要较长时间。
相关推荐
1.4.2版本是Log4Qt的一个稳定版本,旨在提供可靠且灵活的日志记录解决方案,尤其对于那些在Windows平台上运行的Qt应用来说,由于log4cplus可能不兼容或不便使用,Log4Qt成为了一个理想的选择。 **Log4Qt的核心组件*...
在使用Qt库进行FTP文件传输时,可能会遇到一个常见的错误,即"使用了未定义类型“QFtpPrivate”的方法"。这个错误通常出现在尝试编译QFtp类相关的代码时,QFtp是Qt库中用于FTP文件传输的一个组件。在深入探讨这个...
标题中的“JSON.stringify()报错:JSON未定义”是一个常见的JavaScript错误,通常出现在尝试使用`JSON.stringify()`方法但全局环境中没有定义JSON对象时。在浏览器环境中,JSON是默认支持的,但在某些旧版本的IE...
log4cxx是apache的一款优秀的日志文件记录工具,然而,下载能够编译成功的,即log4cxx + apr + apr-util 能够兼容,编译通过的。当时就因为下载的不能够兼容,费了好的的功夫,现在把他们上传上来,供后来人使用
在实际应用中,当开发者遇到编译报错时,可以参考Build Tools Message Reference来理解错误的根源。例如,如果报错代码是10100,那么开发者应检查代码中是否存在未定义的标识符,或者是否遗漏了必要的#include指令。...
### iccavr编译putchar未定义问题及解决方案 #### 一、问题背景与原因分析 在使用ICC AVR编译器进行嵌入式系统开发的过程中,可能会遇到编译时提示`undefined symbol '_putchar'`的错误。这个问题通常出现在尝试在...
### VC6.0到VS2017编译报错解决办法 #### 一、概述 随着软件开发工具的不断进步,Visual Studio (VS) 的版本也在不断更新,从早期的 Visual C++ 6.0 (简称VC6.0) 发展到 VS2017,开发环境和编译器的功能得到了显著...
在本文中,我们将深入探讨如何完美解决在Internet Explorer 9(IE9)浏览器中遇到的“对象未定义”错误。这种问题通常是由于浏览器的兼容性问题、JavaScript代码执行顺序、或者资源加载顺序不当所引起的。以下是一些...
在Visual Studio 2010中编译log4cxx的日志框架涉及到一系列详细的步骤,包括下载源码、解压缩、重命名文件夹、配置环境、修改源代码以及编译等环节。log4cxx是一个基于Java的log4j库的C++版本,用于在C++应用程序中...
然而,编写汇编代码时,由于其语法的严格性和精确性,常常会遇到各种编译错误。本篇文章将深入探讨"Unknown type specifier"和"Symbol not defined"这两种常见的汇编编译错误,以及如何解决它们。 **未知类型指定器...
2. 避免在数据初始化之前操作DOM元素:在Vue的生命周期中,data属性在创建实例之前是未定义的。因此,我们在实例化Vue之前或在data属性初始化之前不应尝试访问或操作绑定在该属性上的DOM元素。如果需要在页面加载时...
### ICCAVR 编译器中 putchar() 未定义问题详解及解决方案 #### 一、问题背景 在使用 ICCAVR 编译器进行 AVR 单片机编程时,经常遇到 `_putchar` 符号未定义的问题。该问题通常出现在尝试在程序中使用 `putchar()`...
本文将深入探讨在使用json2.js时遇到"json未定义"错误的解决方案,以及如何正确使用json.parse方法。 首先,"json未定义"的错误通常发生在尝试调用JSON对象的函数,如`json.parse()`或`json.stringify()`时,但JSON...
单例模式是软件设计模式中的一种,用于控制类的...通过以上方法,你可以有效地解决在实现单例模式时遇到的“未定义的引用”错误。同时,记得根据项目需求和语言版本选择合适的单例实现方式,以确保程序的正确性和性能。
解决这个问题需要遵循一定的步骤,下面将详细解释如何处理这一编译错误。 首先,理解错误原因。当你收到“top level design entity”未定义的错误时,这通常是因为QUARTUS II无法找到你的项目中指定的顶级模块。这...
将JavaScript对象类型的参数通过JSON.stringify转换成字符串传递时,IE5、6、7、8会报:“JSON”未定义 的错误。可以通过在html文件或者Jsp文件的head头内引入json2.js文件来解决,需要先下载json2.js,目前已经使用...
在使用Keil uVision v5编译器时,有时可能会遇到各种报错情况,这通常是由于配置不当、代码错误或编译器版本问题引起的。针对"v5编译器,解决keil5.38compiler报错"这个主题,我们可以深入探讨如何识别和解决这些问题...
光绘导入CAM350报错问题的解决方法.doc
文档《单片机技术初步实践》提供了有关Codewarrior在编译过程中可能遇到的C语言语法错误及其解决方法。以下是针对文档中列出的具体错误及其解决方法的详细说明。 1. C1000错误:非法的标识符列表出现在声明中 描述...
Log4Qt是针对Qt5设计的日志记录库,它是Apache Log4j的Qt版本,为Qt应用程序提供了灵活且功能强大的日志处理机制。 在Qt5中,尽管可以使用内置的`qDebug()`等宏进行简单的日志输出,但当面临复杂日志管理需求时,如...