运行mvn -v后出现 Error: JAVA_HOME is set to an invalid directory

安装Maven后运行mvn -v提示JAVA_HOME指向无效目录,作者参考多篇文章未解决问题,后进入maven/bin找到mvn.cmd,搜索JAVA_HOME,发现之前将%JAVA_HOME%配置在jdk目录,而jdk/bin中无java.exe,将其改到jre目录下问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装完maven,运行mvn -v,提示:  Error: JAVA_HOME is set to an invalid directory.

在百度上看多篇文章说,环境变量该怎么配?是不是多;,等,未解决我的问题。

参考文章  https://blog.youkuaiyun.com/theNightSoCold/article/details/70739088  解决我的问题。

进入到maven/bin,找到mvn.cmd,搜索  JAVA_HOME,找到如下一行:


SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"


我之前配置的%JAVA_HOME%  在jdk目录,该jdk/bin 中没有java.exe.所以,我把%JAVA_HOME% 改到jre目录下,问题解决。失败和成功的截图如下:

 

Started by user sl Running as SYSTEM Building in workspace /var/jenkins_home/workspace/sl-express-gitflow-web [WS-CLEANUP] Deleting project workspace... [WS-CLEANUP] Deferred wipeout is used... [WS-CLEANUP] Done The recommended git tool is: NONE using credential 81a93e16-3a6b-474b-8727-1293bde49842 Cloning the remote Git repository Cloning repository http://git.sl-express.com/sl/sl-express-gitflow-web.git > /usr/bin/git init /var/jenkins_home/workspace/sl-express-gitflow-web # timeout=10 Fetching upstream changes from http://git.sl-express.com/sl/sl-express-gitflow-web.git > /usr/bin/git --version # timeout=10 > git --version # 'git version 2.30.2' using GIT_ASKPASS to set credentials gogs账号 > /usr/bin/git fetch --tags --force --progress -- http://git.sl-express.com/sl/sl-express-gitflow-web.git +refs/heads/*:refs/remotes/origin/* # timeout=10 > /usr/bin/git config remote.origin.url http://git.sl-express.com/sl/sl-express-gitflow-web.git # timeout=10 > /usr/bin/git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 Avoid second fetch > /usr/bin/git rev-parse refs/remotes/origin/develop^{commit} # timeout=10 Checking out Revision 46c2028eb5f59801b8baca4d73fa5acbbbb33d2f (refs/remotes/origin/develop) > /usr/bin/git config core.sparsecheckout # timeout=10 > /usr/bin/git checkout -f 46c2028eb5f59801b8baca4d73fa5acbbbb33d2f # timeout=10 Commit message: "实现相乘的接口" > /usr/bin/git rev-list --no-walk 46c2028eb5f59801b8baca4d73fa5acbbbb33d2f # timeout=10 [SSH] script: chmod a+rw /var/run/docker.sock [SSH] executing... [SSH] completed [SSH] exit-status: 0 [sl-express-gitflow-web] $ /maven/bin/mvn -s /maven/conf/settings.xml -gs /maven/conf/settings.xml clean package -Dmaven.test.skip=true -U [INFO] Scanning for projects... [INFO] [INFO] -----------< com.sl-express.gitflow:sl-express-gitflow-web >------------ [INFO] Building sl-express-gitflow-web 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ sl-express-gitflow-web --- [INFO] [INFO] --- spring-boot-maven-plugin:2.6.6:build-info (default) @ sl-express-gitflow-web --- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ sl-express-gitflow-web --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 3 resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ sl-express-gitflow-web --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 2 source files to /var/jenkins_home/workspace/sl-express-gitflow-web/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ sl-express-gitflow-web --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ sl-express-gitflow-web --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ sl-express-gitflow-web --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ sl-express-gitflow-web --- [INFO] Building jar: /var/jenkins_home/workspace/sl-express-gitflow-web/target/sl-express-gitflow-web-1.0-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:2.6.6:repackage (default) @ sl-express-gitflow-web --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.899 s [INFO] Finished at: 2025-06-29T23:35:04+08:00 [INFO] ------------------------------------------------------------------------ [sl-express-gitflow-web] $ /bin/bash /tmp/jenkins10798732479328880887.sh chmod: cannot access 'target/-1.0-SNAPSHOT.jar': No such file or directory Docker version 20.10.17, build 100c701 ---------停止容器()--------- "docker stop" requires at least 1 argument. See 'docker stop --help'. Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...] Stop one or more running containers ---------删除容器()--------- "docker rm" requires at least 1 argument. See 'docker rm --help'. Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...] Remove one or more containers ---------删除镜像(:1.0-SNAPSHOT)--------- Error response from daemon: invalid reference format ---------构建新镜像(:1.0-SNAPSHOT)--------- invalid argument ":1.0-SNAPSHOT" for "-t, --tag" flag: invalid reference format See 'docker build --help'. ---------运行服务--------- docker: invalid reference format: repository name must be lowercase. See 'docker run --help'. Build step 'Execute shell' marked build as failure Finished: FAILURE
06-30
C:\Java\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53673,suspend=y,server=n -javaagent:C:\Users\ait\AppData\Local\JetBrains\IntelliJIdea2025.1\captureAgent\debugger-agent.jar=file:///C:/Users/ait/AppData/Local/Temp/capture12735004150221848884.props -agentpath:C:\Users\ait\AppData\Local\Temp\idea_libasyncProfiler_dll_temp_folder4\libasyncProfiler.dll=version,jfr,event=wall,interval=10ms,cstack=no,file=C:\Users\ait\IdeaSnapshots\Application__1__2025_06_12_155249.jfr,dbghelppath=C:\Users\ait\AppData\Local\Temp\idea_dbghelp_dll_temp_folder2\dbghelp.dll,log=C:\Users\ait\AppData\Local\Temp\Application__1__2025_06_12_155249.jfr.log.txt,logLevel=DEBUG -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" -Dkotlinx.coroutines.debug.enable.creation.stack.trace=false -Ddebugger.agent.enable.coroutines=true -Dkotlinx.coroutines.debug.enable.flows.stack.trace=true -Dkotlinx.coroutines.debug.enable.mutable.state.flows.stack.trace=true -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.5.0\spring-boot-starter-web-3.5.0.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter\3.5.0\spring-boot-starter-3.5.0.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.5.0\spring-boot-starter-logging-3.5.0.jar;C:\Users\ait\.m2\repository\ch\qos\logback\logback-classic\1.5.18\logback-classic-1.5.18.jar;C:\Users\ait\.m2\repository\ch\qos\logback\logback-core\1.5.18\logback-core-1.5.18.jar;C:\Users\ait\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;C:\Users\ait\.m2\repository\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;C:\Users\ait\.m2\repository\org\slf4j\jul-to-slf4j\2.0.17\jul-to-slf4j-2.0.17.jar;C:\Users\ait\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\ait\.m2\repository\org\yaml\snakeyaml\2.4\snakeyaml-2.4.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.5.0\spring-boot-starter-json-3.5.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.19.0\jackson-databind-2.19.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.19.0\jackson-annotations-2.19.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.19.0\jackson-core-2.19.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.19.0\jackson-datatype-jdk8-2.19.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.19.0\jackson-datatype-jsr310-2.19.0.jar;C:\Users\ait\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.19.0\jackson-module-parameter-names-2.19.0.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.5.0\spring-boot-starter-tomcat-3.5.0.jar;C:\Users\ait\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.41\tomcat-embed-core-10.1.41.jar;C:\Users\ait\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.41\tomcat-embed-el-10.1.41.jar;C:\Users\ait\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.41\tomcat-embed-websocket-10.1.41.jar;C:\Users\ait\.m2\repository\org\springframework\spring-web\6.2.7\spring-web-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-beans\6.2.7\spring-beans-6.2.7.jar;C:\Users\ait\.m2\repository\io\micrometer\micrometer-observation\1.15.0\micrometer-observation-1.15.0.jar;C:\Users\ait\.m2\repository\io\micrometer\micrometer-commons\1.15.0\micrometer-commons-1.15.0.jar;C:\Users\ait\.m2\repository\org\springframework\spring-webmvc\6.2.7\spring-webmvc-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-aop\6.2.7\spring-aop-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-context\6.2.7\spring-context-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-expression\6.2.7\spring-expression-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-devtools\3.5.0\spring-boot-devtools-3.5.0.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot\3.5.0\spring-boot-3.5.0.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.5.0\spring-boot-autoconfigure-3.5.0.jar;C:\Users\ait\.m2\repository\com\mysql\mysql-connector-j\8.0.33\mysql-connector-j-8.0.33.jar;C:\Users\ait\.m2\repository\org\projectlombok\lombok\1.18.38\lombok-1.18.38.jar;C:\Users\ait\.m2\repository\org\slf4j\slf4j-api\2.0.17\slf4j-api-2.0.17.jar;C:\Users\ait\.m2\repository\org\springframework\spring-core\6.2.7\spring-core-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-jcl\6.2.7\spring-jcl-6.2.7.jar;C:\Users\ait\.m2\repository\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus-spring-boot3-starter\3.5.7\mybatis-plus-spring-boot3-starter-3.5.7.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus\3.5.7\mybatis-plus-3.5.7.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus-core\3.5.7\mybatis-plus-core-3.5.7.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.7\mybatis-plus-annotation-3.5.7.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.7\mybatis-plus-extension-3.5.7.jar;C:\Users\ait\.m2\repository\org\mybatis\mybatis\3.5.16\mybatis-3.5.16.jar;C:\Users\ait\.m2\repository\com\github\jsqlparser\jsqlparser\4.9\jsqlparser-4.9.jar;C:\Users\ait\.m2\repository\org\mybatis\mybatis-spring\3.0.3\mybatis-spring-3.0.3.jar;C:\Users\ait\.m2\repository\com\baomidou\mybatis-plus-spring-boot-autoconfigure\3.5.7\mybatis-plus-spring-boot-autoconfigure-3.5.7.jar;C:\Users\ait\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\3.5.0\spring-boot-starter-jdbc-3.5.0.jar;C:\Users\ait\.m2\repository\com\zaxxer\HikariCP\6.3.0\HikariCP-6.3.0.jar;C:\Users\ait\.m2\repository\org\springframework\spring-jdbc\6.2.7\spring-jdbc-6.2.7.jar;C:\Users\ait\.m2\repository\org\springframework\spring-tx\6.2.7\spring-tx-6.2.7.jar;C:\learn\IntelliJ IDEA 2025.1.2\lib\idea_rt.jar" com.example.ait.Application 已连接到地址为 ''127.0.0.1:53673',传输: '套接字'' 的目标虚拟机 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.0) 2025-06-12T15:52:51.275+08:00 INFO 11224 --- [ restartedMain] com.example.ait.Application : Starting Application using Java 21.0.7 with PID 11224 (C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes started by ait in C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait) 2025-06-12T15:52:51.280+08:00 INFO 11224 --- [ restartedMain] com.example.ait.Application : No active profile set, falling back to 1 default profile: "default" 2025-06-12T15:52:51.324+08:00 INFO 11224 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable 2025-06-12T15:52:51.324+08:00 INFO 11224 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' 2025-06-12T15:52:52.242+08:00 INFO 11224 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http) 2025-06-12T15:52:52.257+08:00 INFO 11224 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-06-12T15:52:52.257+08:00 INFO 11224 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.41] 2025-06-12T15:52:52.304+08:00 INFO 11224 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-06-12T15:52:52.304+08:00 INFO 11224 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 979 ms 2025-06-12T15:52:52.737+08:00 WARN 11224 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception with message: Failed to parse mapping resource: 'file [C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes\mapper\UserMapper.xml]' 2025-06-12T15:52:52.739+08:00 INFO 11224 --- [ restartedMain] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-06-12T15:52:52.751+08:00 INFO 11224 --- [ restartedMain] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-06-12T15:52:52.767+08:00 ERROR 11224 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception with message: Failed to parse mapping resource: 'file [C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes\mapper\UserMapper.xml]' at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:657) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1375) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1205) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:569) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1222) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1188) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1123) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987) ~[spring-context-6.2.7.jar:6.2.7] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.7.jar:6.2.7] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.0.jar:3.5.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.5.0.jar:3.5.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.0.jar:3.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.0.jar:3.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) ~[spring-boot-3.5.0.jar:3.5.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) ~[spring-boot-3.5.0.jar:3.5.0] at com.example.ait.Application.main(Application.java:10) ~[classes/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.5.0.jar:3.5.0] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception with message: Failed to parse mapping resource: 'file [C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes\mapper\UserMapper.xml]' at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:199) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168) ~[spring-beans-6.2.7.jar:6.2.7] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-6.2.7.jar:6.2.7] ... 24 common frames omitted Caused by: java.io.IOException: Failed to parse mapping resource: 'file [C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes\mapper\UserMapper.xml]' at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:680) ~[mybatis-plus-extension-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:553) ~[mybatis-plus-extension-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:711) ~[mybatis-plus-extension-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:221) ~[mybatis-plus-spring-boot-autoconfigure-3.5.7.jar:3.5.7] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:171) ~[spring-beans-6.2.7.jar:6.2.7] ... 27 common frames omitted Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [C:\Users\ait\Desktop\java104_spring-master\java104_spring-master\202202151545_Springboot_web_ait\target\classes\mapper\UserMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.example.demo.model.UserInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.example.demo.model.UserInfo at com.baomidou.mybatisplus.core.MybatisXMLMapperBuilder.configurationElement(MybatisXMLMapperBuilder.java:129) ~[mybatis-plus-core-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.core.MybatisXMLMapperBuilder.parse(MybatisXMLMapperBuilder.java:102) ~[mybatis-plus-core-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:678) ~[mybatis-plus-extension-3.5.7.jar:3.5.7] ... 33 common frames omitted Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.example.demo.model.UserInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.example.demo.model.UserInfo at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:103) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:105) ~[mybatis-3.5.16.jar:3.5.16] at com.baomidou.mybatisplus.core.MybatisXMLMapperBuilder.buildStatementFromContext(MybatisXMLMapperBuilder.java:145) ~[mybatis-plus-core-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.core.MybatisXMLMapperBuilder.buildStatementFromContext(MybatisXMLMapperBuilder.java:137) ~[mybatis-plus-core-3.5.7.jar:3.5.7] at com.baomidou.mybatisplus.core.MybatisXMLMapperBuilder.configurationElement(MybatisXMLMapperBuilder.java:127) ~[mybatis-plus-core-3.5.7.jar:3.5.7] ... 35 common frames omitted Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.example.demo.model.UserInfo'. Cause: java.lang.ClassNotFoundException: Cannot find class: com.example.demo.model.UserInfo at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:128) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:132) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:101) ~[mybatis-3.5.16.jar:3.5.16] ... 39 common frames omitted Caused by: java.lang.ClassNotFoundException: Cannot find class: com.example.demo.model.UserInfo at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:226) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:103) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.io.Resources.classForName(Resources.java:322) ~[mybatis-3.5.16.jar:3.5.16] at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:124) ~[mybatis-3.5.16.jar:3.5.16] ... 41 common frames omitted 已与地址为 ''127.0.0.1:53673',传输: '套接字'' 的目标虚拟机断开连接 进程已结束,退出代码为 0
06-14
<think>我们正在解决Maven执行时提示JAVA_HOME环境变量未正确定义的问题。根据引用内容,我们可以总结以下几点: 1. 在Windows平台上,Maven的mvn.cmd脚本会引用JAVA_HOME环境变量,如果找不到就会报错(引用[1])。 2. 如果电脑安装了多个JDK版本,可能当前使用的JDK版本与环境变量中JAVA_HOME配置的版本不一致(引用[2])。 3. 在某些情况下(如通过Inno Setup执行),可能环境变量没有被正确继承(引用[3])。 因此,解决步骤可以如下: ### 步骤1: 检查JAVA_HOME环境变量是否设置 - 打开命令提示符(CMD)或PowerShell。 - 输入以下命令检查JAVA_HOME: ```cmd echo %JAVA_HOME% ``` 或者(在PowerShell中): ```powershell echo $env:JAVA_HOME ``` - 如果没有任何输出或输出的路径不正确,则需要设置或修改JAVA_HOME环境变量。 ### 步骤2: 确认JDK安装路径 - 如果你不知道JDK的安装路径,可以通过以下命令查找: ```cmd where java ``` 该命令会显示java.exe的路径,通常类似于: ``` C:\Program Files\Java\jdk1.8.0_291\bin\java.exe ``` 那么JDK的安装路径就是`C:\Program Files\Java\jdk1.8.0_291`(注意去掉末尾的`\bin\java.exe`)。 ### 步骤3: 设置JAVA_HOME环境变量 -JAVA_HOME设置为JDK的安装路径(例如:`C:\Program Files\Java\jdk1.8.0_291`)。 - 注意:路径中不要包含`bin`目录。 #### 设置方法(Windows): 1. 右键点击“此电脑”或“计算机”,选择“属性”。 2. 点击“高级系统设置” > “环境变量”。 3. 在“系统变量”中,点击“新建”: - 变量名:`JAVA_HOME` - 变量值:你的JDK安装路径(例如:`C:\Program Files\Java\jdk1.8.0_291`) 4. 如果已经存在JAVA_HOME,则选中并点击“编辑”,确保路径正确。 5. 同时,检查“Path”变量中是否包含`%JAVA_HOME%\bin`。如果没有,请添加。 ### 步骤4: 验证设置 - 重新打开一个新的命令提示符(重要,因为环境变量更改需要重新启动CMD才能生效)。 - 输入以下命令验证: ```cmd echo %JAVA_HOME% java -version ``` 确保`java -version`显示的版本与你设置的JDK版本一致。 ### 步骤5: 验证Maven - 在命令提示符中输入: ```cmd mvn -v ``` 如果此时仍然报错,请检查Maven的安装是否正确,以及Maven的`mvn.cmd`脚本是否能够正确读取JAVA_HOME。 ### 可能的问题及解决方案 1. **多个JDK版本冲突**(引用[2]): - 确保JAVA_HOME指向你希望Maven使用的JDK版本。可以通过`java -version`查看当前使用的JDK版本,如果与JAVA_HOME设置不一致,请调整JAVA_HOME指向该版本。 2. **环境变量未正确继承**(引用[3]): - 如果你是在某个程序(如Inno Setup)中执行Maven命令,请确保该程序能够获取到系统环境变量。可能需要重启该程序或整个系统。 3. **路径中包含空格或特殊字符**: - 如果JDK安装在带有空格的路径下(如`Program Files`),请确保JAVA_HOME的路径用双引号括起来?实际上,在环境变量中设置路径时不需要加引号,但如果脚本中引用时可能需要注意。不过,通常只要环境变量中的路径正确,Maven可以处理。 4. **使用Maven的另一个环境变量M2_HOME**: - 虽然问题中提到了M2_HOME,但根据引用[1],Maven3.6.1在Windows上主要依赖JAVA_HOME。但如果你配置了M2_HOME,也请确保其指向Maven的安装目录(不是JDK的目录)。 ### 特殊情况:Mac平台 根据引用[1],Mac平台不需要配置JAVA_HOME,因为Maven脚本会通过`which java`来找到Java路径。但如果你在Mac上遇到同样的问题,可以尝试: 1. 确认是否安装了JDK(不仅仅是JRE)。 2. 可以通过以下命令设置临时环境变量(或在`.bash_profile`或`.zshrc`中永久设置): ```bash export JAVA_HOME=$(/usr/libexec/java_home) ``` ### 总结 解决此问题的核心是确保JAVA_HOME环境变量正确指向了JDK的安装目录(不是JRE),并且没有多余的空格或特殊字符导致解析错误。同时,注意环境变量设置后需要重启命令提示符才能生效。 §§相关问题§§ 1. 如何检查系统中安装的JDK版本? 2. 在Linux或Mac系统上如何设置JAVA_HOME环境变量? 3. Maven安装后还需要配置哪些环境变量? 4. 为什么在IDE(如IntelliJ IDEA)中运行Maven命令不会出现JAVA_HOME错误?</think>### 解决 Maven 提示 "JAVA_HOME 环境变量未正确定义" 的步骤 #### 1. **确认 JDK 安装** - 检查是否已安装 JDK(而非仅 JRE): ```cmd java -version ``` 正常应显示类似: ``` java version "1.8.0_301" Java(TM) SE Runtime Environment (build 1.8.0_301-b09) ``` - 若未安装,需下载并安装 JDK(推荐 JDK 8 或 11 等长期支持版本)。 #### 2. **验证 JAVA_HOME 设置** - 检查当前 `JAVA_HOME` 的值: ```cmd echo %JAVA_HOME% ``` - **正确示例**:`C:\Program Files\Java\jdk1.8.0_301`(Windows)或 `/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home`(Mac) - **常见错误**: - 包含 `bin` 目录(如 `C:\Program Files\Java\jdk1.8.0_301\bin` ❌) - 指向 JRE 而非 JDK(如 `C:\Program Files\Java\jre1.8.0_301` ❌) #### 3. **修复 JAVA_HOME 配置** - **Windows**: 1. 打开系统属性 → 环境变量 → 新建系统变量: - 变量名:`JAVA_HOME` - 变量值:JDK 安装路径(**无 `bin` 后缀**) 2. 编辑 `Path` 变量,添加:`%JAVA_HOME%\bin` - **Mac/Linux**: 1. 编辑 `~/.bashrc` 或 `~/.zshrc`: ```bash export JAVA_HOME=$(/usr/libexec/java_home) # Mac 自动获取路径 # 或手动指定:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH ``` 2. 应用配置: ```bash source ~/.bashrc ``` #### 4. **处理多版本 JDK 冲突** - 若安装多个 JDK(如 JDK 8 和 JDK 11): 1. 检查默认 JDK: ```cmd where java # Windows which java # Mac/Linux ``` 2. 确保 `JAVA_HOME` 指向 `java -version` 显示的版本路径(引用[2])。 #### 5. **验证修复结果** - 重启命令行后执行: ```cmd echo %JAVA_HOME% # 应显示正确路径 java -version # 确认版本 mvn -v # 应输出 Maven 及 JDK 信息 ``` **成功示例**: ``` Apache Maven 3.6.1 Maven home: C:\apache-maven-3.6.1 Java version: 1.8.0_301, vendor: Oracle Corporation Java home: C:\Program Files\Java\jdk1.8.0_301\jre # 此处应为 JDK 路径 ``` #### 6. **特殊场景处理** - **IDE 中正常但命令行报错**:IDE 可能内置 JDK 配置,需同步系统环境变量。 - **脚本调用报错**(如 Inno Setup):确保脚本能继承系统环境变量(引用[3])。 - **Mac 无需配置?**:Maven 脚本会通过 `which java` 自动查找路径(引用[1]),但显式配置更可靠。 > **关键点总结**: > - `JAVA_HOME` 必须指向 **JDK 根目录**(无 `bin` 或斜杠结尾)。 > - Windows 必须配置 `JAVA_HOME`,Mac 可自动检测但仍建议显式设置(引用[1])。 > - 多 JDK 时需确保 `JAVA_HOME` 与 `java -version` 版本一致(引用[2])。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值