在IntelliJIDEA中,向父工程的lib文件夹添加JDBC驱动jar包后,子模块加载驱动时抛出ClassNotFoundException。原因是该jar不会自动被包含到子模块的类路径中。解决方案:复制jar到子模块的lib文件夹,或手动在子模块的项目结构设置中添加该jar到类路径。
Java找不到JAR包原因及解决方法
时间:2026-07-18
浏览:448
文章目录
错误场景
在IDEA中创建了多个Module,明明已在工程目录的lib文件夹下放置了JDBC的jar包,但执行以下代码加载类时:
Class.forName(“com.mysql.cj.jdbc.Driver”);
结果直接报错:
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
明明jar包就在那里,为什么找不到呢?
原因分析
这个问题在实际开发中非常常见。关键原因在于:你将jar包添加到工程根目录下的lib文件夹中,并不会自动映射到各个子Module的类路径(ClassPath)下。子Module无法直接访问父工程中的文件路径,除非你手动将该路径添加到子Module的ClassPath中。换句话说,jar包虽然放进了目录,但类加载路径并未打通,因此加载时自然失败。
解决方案
明确问题根源后,有两种有效的解决方法。
方案一:直接将jar导入到具体Module的目录下
最直接的做法是,将需要的jar包复制一份,放到对应子Module的lib目录下。这样jar包就位于该子Module的“势力范围”内,类加载器能够直接找到并加载。
方案二:手动配置子Module的类路径
如果项目结构较大,希望统一管理依赖,避免在每个子Module下都放置一份jar包,可以在IDE中手动配置。为各个子Module添加父工程lib目录的引用路径。具体操作步骤可参考下面的图示。


这两种方法均经过验证有效,可以根据项目实际情况灵活选择。
总结
这个问题的本质并非jar包丢失,而是子Module的类加载路径没有覆盖到jar包所在目录。理解了这一点,今后遇到类似情况就能快速定位并解决。希望本文的经验能为你提供帮助。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。