Building log4j

本文记录了在本地重新构建log4j 1.2.16版本过程中遇到的错误及解决方案,包括调整Maven版本和环境变量设置。
 

想要查看log4j的源码。因此下载了最新的apache-log4j-1.2.16来看看。

光看还不过瘾,要本机重新打包玩玩。

把构建过程中遇到的错误记录如下:

0.maven版本 :
    mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: E:\worksofts\apache-maven-3.0.4
Java version: 1.6.0_05, vendor: Sun Microsystems Inc.
Java home: E:\worksofts\bea\jdk160_05\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows vista", version: "6.1", arch: "x86", family: "windows"


最开始构建有错误,但是提示不清楚,因此加参数:mvn install -e -X

1.发现错误如下:
[ERROR]
[ERROR]   The project log4j:log4j:1.2.16 (D:\eclipse\myprojects\apache-log4j-1.2
.16\pom.xml) has 1 error
[ERROR]     'build.plugins.plugin[org.apache.maven.plugins:maven-antrun-plugin].
dependencies.dependency.scope' for junit:junit:jar must be one of [compile, runt
ime, system] but is 'test'. @ line 303, column 20
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildin
gException

估计应该不是pom.xml的问题,因此考虑换mvn版本试试。更换为 2.2.1

2.更换版本 
    mvn -v
Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
Java version: 1.6.0_05
Java home: E:\worksofts\bea\jdk160_05\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows vista" version: "6.1" arch: "x86" Family: "windows"

再次构建,出现如下错误:
Caused by: org.apache.maven.reporting.MavenReportException:
Exit code: 1 - java.lang.IllegalArgumentException
        at sun.net.www.ParseUtil.decode(ParseUtil.java:189)
        at sun.misc.URLClassPath$FileLoader.<init>(URLClassPath.java:953)
        at sun.misc.URLClassPath$3.run(URLClassPath.java:326)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.misc.URLClassPath.getLoader(URLClassPath.java:320)
        at sun.misc.URLClassPath.getLoader(URLClassPath.java:297)
        at sun.misc.URLClassPath.findResource(URLClassPath.java:144)
        at java.net.URLClassLoader$2.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(URLClassLoader.java:359)
        at java.lang.ClassLoader.getResource(ClassLoader.java:977)
        at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1159)
        at javax.xml.parsers.SecuritySupport$4.run(SecuritySupport.java:96)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.xml.parsers.SecuritySupport.getResourceAsStream(SecuritySupport
.java:89)......

3.发现mvn的环境变量设置可能出现错误。重置环境变量。
        set CLASSPATH= 
        再次构建:
        [INFO] Writing OBR metadata
        [INFO] ------------------------------------------------------------------------
        [INFO] BUILD SUCCESSFUL
        [INFO] ------------------------------------------------------------------------
        [INFO] Total time: 1 minute 43 seconds
        [INFO] Finished at: Thu Mar 15 22:53:35 CST 2012
        [INFO] Final Memory: 31M/57M
        [INFO] ------------------------------------------------------------------------

终于看到了BUILD SUCCESSFUL !
       

<think>好的,用户遇到了WRF编译的问题,需要解决编译过程中出现的错误。首先,我需要回忆一下WRF编译的常见问题及解决方法。根据用户提供的引用内容,他们可能使用了em_real案例,并且在编译时生成了log.compile日志文件。用户还提到引用了关于使用icc和ifort编译器的注意事项,以及替换了一些固定文件。 首先,我应该建议用户检查日志文件log.compile,因为里面会有具体的错误信息。常见的编译错误可能包括依赖库缺失、编译器配置不当、环境变量设置错误或源代码问题。用户需要根据错误信息来定位问题。 接下来,用户可能没有正确设置环境变量,比如EM_CORE、NMM_CORE等,这些在引用[2]中提到过。需要确认用户是否按照文档正确导出这些变量。另外,编译器版本也可能导致问题,比如icc和ifort的2019更新版本可能需要特定的补丁或配置文件替换,如引用[2]所述,用户可能需要替换原始WRF文件中的某些文件。 另外,用户是否安装了所有必要的依赖库,比如NetCDF、MPI等?这些库的路径是否正确设置?有时候库路径不正确或版本不兼容会导致编译失败。 还有,用户是否在干净的源码基础上进行编译?之前失败的编译可能会残留文件,建议先执行clean命令,再重新配置和编译。此外,并行编译时使用-j参数可能导致错误信息被掩盖,建议不加该参数以便查看详细错误。 如果用户遇到了特定的错误信息,比如“undefined reference”或“missing header files”,需要针对性地解决,比如安装缺失的开发包或调整编译器选项。最后,如果用户已经尝试了上述步骤仍无法解决,建议提供具体的错误日志段落,以便进一步分析。</think>### WRF编译问题解决方案 #### 1. 检查编译日志定位错误 首先需查看`log.compile`文件中的具体错误提示。例如: ``` Error: Unresolved external symbol 'mpi_init_' in module wrf_main.o ``` 此类错误通常与MPI库配置相关[^1]。通过`grep -i error log.compile`可快速筛选关键信息。 #### 2. 验证环境配置 根据引用[2]的要求,必须设置以下环境变量: ```bash export EM_CORE=1 export NMM_CORE=0 export WRF_CHEM=1 export WRF_KPP=0 export WRFIO_NCD_LARGE_FILE_SUPPORT=1 ``` 使用`env | grep WRF`确认变量是否生效。 #### 3. 检查编译器兼容性 Intel编译器需特别注意: - 确认使用`icc/ifort 2019 update ver2` - 替换WRF源码中的补丁文件(引用[2]提及的fixed files) - 运行`./clean -a`清除旧编译文件 #### 4. 依赖库验证 执行以下检查: ```bash # 查看NetCDF配置 ncdump -h /path/to/test.nc # 检查MPI路径 which mpicc # 验证库链接 ldconfig -p | grep libnetcdf ``` #### 5. 分步编译测试 建议分阶段编译: ```bash # 清理环境 ./clean -a # 配置选择 ./configure # 选择34. (Intel icc/ifort) 或其他对应选项 # 分步编译 ./compile em_real 2>&1 | tee compile.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值