本人习惯使用Intellij IDEA做Java项目开发,最近在新项目中使用SpringBoot时出现一个很奇怪的现象,新建的SpringBoot的项目在我机器上跑的好好的,在其他同事的机器上就是跑不起来,程序直接退出:
......
Disconnected from the target VM, address: '127.0.0.1:49362', transport: 'socket' Process finished with exit code 1
|
实在没办法只能debug调试,在org.springframework.boot.devtools.restart.RestartLauncher
类的run
方法中抛出异常:
@Override public void run() { try { Class<?> mainClass = getContextClassLoader().loadClass(this.mainClassName); Method mainMethod = mainClass.getDeclaredMethod("main", String[].class); mainMethod.invoke(null, new Object[] { this.args }); } catch (Throwable ex) { this.error = ex; getUncaughtExceptionHandler().uncaughtException(this, ex); } }
|
发现没有读取到配置文件。
经过我不懈努力,主要是找两个环境之间的差异,后来发现是IDEA生成的iml
文件有问题,需要找到跟启动的项目名称相同的.iml
文件(假如你的项目为 hello,那么IDEA一定会给你生成一个 hello.iml
文件,一般在项目的.idea
目录下或者项目根目录下。)
解决方案:
在 hello.iml
文件中加上 <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
后问题得到解决。
<?xml version="1.0" encoding="UTF-8"?> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <component name="FacetManager"> <facet type="Spring" name="Spring"> <configuration/> </facet> </component> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <output url="file://$MODULE_DIR$/target/classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/conf/dev" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> // ##就是这条## <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> <excludeFolder url="file://$MODULE_DIR$/target" /> </content> ......
|
完。