Mac环境下构建Java17兼容MuleSoft JSON Logger时JDeps命令错误排查
MuleSoft JSON Logger组件发布到Anypoint Exchange的JAVA_HOME配置问题
错误信息
Failed to execute goal org.apache.maven.plugins:maven-jdeps-plugin:3.1.2:jdkinternals (default) on project json-logger: Unable to find jdeps command: The environment variable JAVA_HOME is not correctly set
环境信息
- Mac系统
- 终端执行命令结果:
/usr/libexec/java_home /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home which java /usr/bin/java - 项目基于MuleSoft支持团队提供的JSON Logger,仅修改了pom.xml并删除AMQP、Broker Destinations相关内容,目标支持Java 17和Mule 4.6+
解决方案
1. 临时切换到Java 17并验证配置
你当前默认Java版本是11,但需要用Java 17构建组件。先找到Java 17的安装路径:
/usr/libexec/java_home -v 17
输出类似/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home的路径后,临时设置当前终端的JAVA_HOME:
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
验证配置是否生效:
echo $JAVA_HOME java -version jdeps -version
确认Java版本为17且jdeps命令能正常运行。
2. 永久配置Java 17环境(可选)
如果需要每次终端启动都自动使用Java 17,编辑你的shell配置文件:
- 若用zsh:编辑
~/.zshrc - 若用bash:编辑
~/.bash_profile或~/.bashrc
添加以下内容:
export JAVA_HOME=$(/usr/libexec/java_home -v 17) export PATH=$JAVA_HOME/bin:$PATH
保存后执行source ~/.zshrc(对应你的配置文件)使修改生效。
3. 调整pom.xml的Java版本和插件配置
你的pom.xml未指定Java版本,需在<properties>块中添加:
<java.version>17</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.release>${java.version}</maven.compiler.release>
同时,maven-jdeps-plugin 3.1.2对Java 17支持有限,建议升级到稳定版:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jdeps-plugin</artifactId> <version>3.4.0</version> <executions> <execution> <goals> <goal>jdkinternals</goal> <goal>test-jdkinternals</goal> </goals> </execution> </executions> <configuration> <failOnWarning>true</failOnWarning> </configuration> </plugin>
4. 验证Maven使用的Java环境
执行以下命令确认Maven使用的Java路径:
mvn -version
查看输出中的Java home是否指向Java 17的安装路径。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

