导出普通JAR文件后无法运行:找不到org.apache.commons.lang3.StringUtils
问题与解决方法
问题描述
- 项目已引入
org.apache.commons.lang3.jar依赖,在Eclipse中可正常运行 - 通过「Runnable JAR File」选项导出的可执行JAR能正常启动
- 为缩小文件体积选择「JAR File」选项导出后,运行JAR时提示找不到
org.apache.commons.lang3.StringUtils
解决方案
方法1:手动指定类路径运行
将导出的JAR与org.apache.commons.lang3.jar放在同一目录,执行以下命令启动(Windows系统用分号替代冒号):
# Linux/Mac java -cp 你的导出JAR包名.jar:org.apache.commons.lang3.jar 主类全限定名 # Windows java -cp 你的导出JAR包名.jar;org.apache.commons.lang3.jar 主类全限定名
方法2:调整Eclipse导出配置
在「JAR File」导出向导中:
- 勾选「Export generated class files and resources」
- 展开项目的「Referenced Libraries」,勾选
org.apache.commons.lang3.jar一起导出 - 导出后编辑
MANIFEST.MF,添加以下配置(替换为你的主类路径):Main-Class: com.yourpackage.YourMainClass Class-Path: org.apache.commons.lang3.jar
方法3:用构建工具打包(更高效)
如果项目使用Maven或Gradle,可通过插件生成包含依赖的精简可执行JAR:
- Maven:添加
maven-shade-plugin到pom.xml,执行mvn package生成合并依赖的JAR:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals><goal>shade</goal></goals> <configuration> <mainClass>com.yourpackage.YourMainClass</mainClass> </configuration> </execution> </executions> </plugin> </plugins> </build> - Gradle:引入
shadow插件,执行gradle shadowJar生成目标JAR:plugins { id 'java' id 'com.github.johnrengelman.shadow' version '7.1.2' } shadowJar { mainClassName = 'com.yourpackage.YourMainClass' }
内容的提问来源于stack exchange,提问作者poojay
相关产品推荐
相关产品推荐

