Failed to get nestedarchive for entry BOOT-INF/lib/axis2-1.6.2.pom

本文介绍了一种在使用Gradle构建Spring Boot项目时遇到的问题:运行jar包时出现无法获取嵌套档案的异常。通过分析错误日志,发现在build.gradle文件中存在一个可能导致问题的'pom'设置。删除该设置后,重新打包并运行,问题得以解决。

gradle工程使用bootjar打包出jar之后,使用java -jar命令运行jar,然后程序报错

Exception in thread "main" java.lang.IllegalStateException: Failed to get nestedarchive for entry BOOT-INF/lib/axis2-1.6.2.pom
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:108)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:86)
        at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:70)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:49)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/axis2-1.6.2.pom'
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:254)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:239)
        at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:103)
        ... 4 more
Caused by: java.io.IOException: Unable to find ZIP central directory records after reading 28780 bytes
        at org.springframework.boot.loader.jar.CentralDirectoryEndRecord.<init>(CentralDirectoryEndRecord.java:65)
        at org.springframework.boot.loader.jar.CentralDirectoryParser.parse(CentralDirectoryParser.java:52)
        at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:121)
        at org.springframework.boot.loader.jar.JarFile.<init>(JarFile.java:109)
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:287)
        at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:262)
        at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:250)
        ... 6 more

查看工程,发现build.gradle文件中有一个ext: 'pom'设置,删除掉

重新打包,运行没有出现错误了

编译时出现`libqwt.so`库中未定义引用错误、`ld`返回1退出状态以及`make`失败,通常是由库文件缺失、库文件不兼容、链接路径问题或者库版本不匹配等原因造成的。可以尝试以下解决方法: ### 检查库文件是否存在 确认`libqwt.so`库文件确实存在于系统中。可以使用`find`命令来查找该文件: ```bash find / -name "libqwt.so" 2>/dev/null ``` 若文件不存在,需要重新安装`Qwt`库。 ### 检查库文件的兼容性 引用中提到了“skipping incompatible /usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug/lib/libqwt.so”,这表明库文件与当前编译环境不兼容。要确保使用的`libqwt.so`库是为当前目标平台(如ARM架构的Android)编译的。如果需要,重新为目标平台编译`Qwt`库。 ### 确保链接路径正确 需要保证编译器能够找到`libqwt.so`库文件。可以通过以下两种方式来指定链接路径: - 在编译命令中使用`-L`选项指定库文件所在的目录,例如: ```bash g++ your_source_files.cpp -L/path/to/libqwt -lqwt -o your_program ``` - 将库文件所在的目录添加到`LD_LIBRARY_PATH`环境变量中: ```bash export LD_LIBRARY_PATH=/path/to/libqwt:$LD_LIBRARY_PATH ``` 然后重新编译项目。 ### 检查库版本 确保使用的`Qwt`库版本与项目代码兼容。不同版本的`Qwt`库可能会有不同的接口和功能,如果版本不匹配,可能会导致未定义引用错误。可以尝试使用与项目开发时相同版本的`Qwt`库。 ### 重新编译和安装Qwt库 如果上述方法都无法解决问题,可以尝试重新编译和安装`Qwt`库: 1. 下载`Qwt`库的源代码。 2. 解压源代码包并进入目录: ```bash tar -zxvf qwt-x.x.x.tar.gz cd qwt-x.x.x ``` 3. 配置、编译和安装: ```bash qmake qwt.pro make sudo make install ``` ### 检查头文件和库文件的一致性 确保在代码中包含的`Qwt`头文件与链接的`libqwt.so`库文件版本一致。如果头文件和库文件版本不匹配,也可能会导致未定义引用错误。 ### 清理和重新编译项目 有时候,项目的临时文件可能会导致编译问题。可以尝试清理项目的临时文件,然后重新编译: ```bash make clean make ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值