使用Eclipse时一切正常, 切换到idea就报错, 虽然可以用绝对路径, 但是不搞明白总觉得不爽
报错的源码 DefaultShellCallback 类 59行, 没理解 new File() 为什么可以传相对路径
File project = new File(targetProject);
if (!project.isDirectory()) {
throw new ShellException(getString("Warning.9", //$NON-NLS-1$
targetProject));
}
绕了一些弯路, 最终参考 https://bbs.youkuaiyun.com/topics/390680444 解决问题
edit configurations里面有一项working directory
原因:
假设有ABC3个项目特殊原因被拆分, 因为idea默认打开一个项目就好开启一个窗口, 有时候跨项目查看代码不方便
所以用把项目都整合到了一起
假设顺序是: A -> B -> C
然而idea的 Run/Debug Configurations 中的Working directory 默认用的第一个项目A
所以当B, C项目运行代码时(非A项目)必须修改该值
$MODULE_WORKING_DIR$
========================================================
一直以为工作目录是通过 xxx.class.getClass().getResource(""); 来取的, 造成没理解
maven结构, test模块下的代码
xxx.getClass().getResource("");//当前项目xxx类的路径
如: C:/git/test-server/target/test-classes/cn/test/code/generator/
xxx.getClass().getResource("");//当前项目的根路径
如: C:/git/test-server/target/test-classes/
getResource()实际上都是通过ClassLoader来处理的
====================================================================
获取当前工作目录的2种写法
new File( "." ).getCanonicalPath();
System.getProperty("user.dir");
如: C:\git\test-server