Eclipse导出Jar报错但target目录已生成Jar文件的问题
解决Eclipse导出Jar报错但Maven已生成Jar的问题
Let’s break down exactly what’s causing these errors and how to fix them step by step:
1. 测试类Class文件找不到的根源
你执行了mvn clean compile install,但Maven的compile目标只会编译src/main/java下的业务代码,不会处理src/test/java里的测试类。而你在Eclipse导出时选择了包含测试类的资源,这些类没有对应的class文件(根本没被编译过),所以会抛出"Class files on classpath not found"错误。
解决办法:
- 首选方案:导出Jar时直接排除
src/test目录。生产环境用的Jar几乎不需要包含测试代码,在Eclipse导出的「Select resources to export」步骤里,取消勾选VeryOldccstore/src/test文件夹即可。 - 如果确实需要包含测试类:先执行
mvn clean test-compile install,这个命令会额外编译测试类并生成对应的class文件,之后再用Eclipse导出就能找到这些类了。
2. SVN文件重复条目错误
这些错误是因为你不小心把版本控制的.svn目录也包含在导出资源里了。每个目录下的.svn文件夹里都有同名文件(比如all-wcprops、entries),打包进Jar时,相同路径的文件会直接冲突,导致"duplicate entry"报错。
解决办法:
- 在Eclipse导出Jar的资源选择步骤,手动取消所有
.svn目录的勾选,或者用右上角的「Filter」功能添加过滤规则,直接排除所有.svn相关文件。 - 更省心的方式:直接依赖Maven打包。运行
mvn clean package,Maven会自动帮你排除版本控制文件、未编译代码和其他非必要资源,生成的Jar在target目录里——就是你已经看到的那个正常Jar,这比手动导出更可靠,完全避免人为误操作。
为什么Target目录已经有正确的Jar?
因为你执行的mvn install命令包含了package步骤,Maven打包时默认会排除测试类、版本控制文件和冗余资源,所以生成的Jar是完全正常的。而你手动用Eclipse导出时选了错误的选项(包含测试类、SVN文件),才触发了这些报错。
内容的提问来源于stack exchange,提问作者Vijay Manohar
相关产品推荐
相关产品推荐

