最近写了个简单的定时执行文件,5分钟做一次,调用外部bat,打log等。最后整个source打成jar。
调用外部文件exec("abc.bat"),log4j中log4j.A.File = log.log等。都是相对路径的。
下面说下现象(bat文件放在jar的相同目录下):
windows下双击运行这个jar,调用bat文件OK,打log也OK,生成的log文件跟jar路径一致。
在cmd中打java -jar .... 运行,报错bat文件找不到,log也打在了jar所在磁盘的根目录下
这两种运行方式对路径有什么影响?望高手赐教。
另外:linux中用终端打java -jar .... 运行,报bat文件找不到,log打在/root下。
调用外部文件exec("abc.bat"),log4j中log4j.A.File = log.log等。都是相对路径的。
下面说下现象(bat文件放在jar的相同目录下):
windows下双击运行这个jar,调用bat文件OK,打log也OK,生成的log文件跟jar路径一致。
在cmd中打java -jar .... 运行,报错bat文件找不到,log也打在了jar所在磁盘的根目录下
这两种运行方式对路径有什么影响?望高手赐教。
另外:linux中用终端打java -jar .... 运行,报bat文件找不到,log打在/root下。
取当前jar包的路径,如果是我我会用ClassLoader.getResource("jar包中的某个文件")来获得一个URL。解析此URL就能得到当前jar包的绝对路径。
String path = null;
URL url = new MainForm().getClass().getProtectionDomain().getCodeSource().getLocation();
path = url.toString().replaceFirst("file:", "");
path = path.replaceFirst("XXX.jar", "");
return path;
}
String path = null;
URL url = new MainForm().getClass().getProtectionDomain().getCodeSource().getLocation();
path = url.toString().replaceFirst("file:", "");
path = path.replaceFirst("XXX.jar", "");
return path;
}
File path = new File(this.getClass().getResource("").getPath());
path.getAbsolutePath()这个是当前类的本地路径,可以基于这个路径做查找,如:
path.getParentFile().getAbsolutePath();就是上级目录的路径。