JDK11+JavaFX项目遇c3p0模块未找到异常求助
解决思路
检查c3p0 JAR的模块化状态
查看c3p0的JAR包内是否存在module-info.class文件。如果没有,说明它是非模块化JAR,属于自动模块。此时虽然requires c3p0;的声明语法正确,但需要确保Gradle将其加入模块路径而非类路径。修正Gradle配置,确保依赖进入模块路径
确认Gradle依赖配置正确,并且运行时JVM参数包含模块路径。示例配置:dependencies { implementation 'com.mchange:c3p0:0.9.5.5' } tasks.withType(JavaCompile) { options.compilerArgs += ['--module-path', classpath.asPath] } tasks.withType(JavaExec) { jvmArgs += ['--module-path', classpath.asPath, '--module', '你的模块名/主类全限定名'] }替换
你的模块名和主类全限定名为实际项目信息。确认自动模块名称正确性
查看c3p0 JAR的MANIFEST.MF文件,检查是否有Automatic-Module-Name属性,存在则用该属性值作为requires的模块名;如果没有,默认自动模块名为去掉版本号的JAR文件名(比如c3p0-0.9.5.5.jar对应模块名c3p0)。若名称不匹配,会导致模块找不到。检查IDE运行配置
如果用IDE启动项目,需确认运行配置的「模块路径」中包含c3p0依赖。部分IDE默认可能将非模块化JAR放到类路径,需手动调整到模块路径。临时降级为非模块化模式
如果不需要项目的模块化特性,可以直接删除module-info.java文件,改用传统类路径方式运行,避免模块系统的限制。
内容的提问来源于stack exchange,提问作者notyeat
相关产品推荐
相关产品推荐

