Intellij中Google Text-to-Speech包多模块访问冲突问题
解决Google Text-to-Speech模块包冲突及自动模块警告问题
问题根源
模块冲突是因为你在module-info.java中同时声明了两个导出同一包的模块:google.cloud.texttospeech和proto.google.cloud.texttospeech.v1beta1,后者是未包含module-info的自动模块,导致JVM无法确定该使用哪个模块的包。自动模块警告则是因为这个proto模块没有显式的模块声明,名字由文件名生成,存在不稳定风险。
解决方案
1. 修改module-info.java
移除对proto.google.cloud.texttospeech.v1beta1的直接依赖声明,只保留google.cloud.texttospeech即可:
module your.module.name { requires google.cloud.texttospeech; // 移除 requires proto.google.cloud.texttospeech.v1beta1; // 保留其他必要的requires声明(比如javafx相关) }
google.cloud.texttospeech模块已经通过依赖传递包含了所需的proto类,无需单独引入。
2. 确认Maven依赖配置
你的pom.xml配置是正确的,只需保留google-cloud-texttospeech依赖,Maven会自动处理其依赖的proto相关jar包:
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-texttospeech</artifactId> </dependency>
通过libraries-bom引入的版本已做好依赖版本管理,无需额外指定版本。
3. 验证修复
修改后重新编译项目,模块冲突错误和自动模块警告都会消失。你的导入语句无需修改,因为google.cloud.texttospeech模块已经导出了com.google.cloud.texttospeech.v1beta1包。
内容的提问来源于stack exchange,提问作者Hasen
相关产品推荐
相关产品推荐

