———–20230930————
mt_server
gateway
File file = new File("./gamedata/serviceId2Platform.txt");
那应该是从哪里写这个路径呢?其实就是:mt_server/gamedata/xx.txt下就行
然后打包时,执行下导出的路径即可:
<fileSet>
<directory>../gamedata</directory>
<outputDirectory>gamedata</outputDirectory>
<includes>
<include>OpenPort.csv</include>
<include>serviceId2Platform.txt</include>
<include>payReturn.csv</include>
</includes>
<fileMode>0644</fileMode>
</fileSet>
——————
1.设置
Edit Configurations–》 默认的话,工作目录就是当前工程下,因此加载dll之类的,直接写System.load(“xxx.dll”),只需要把放在工作目录(项目根目录)下即可。
2.通过代码设置
当然了,查找路径的话,还可以这样子用代码方式动态增加一个工作目录:
package utils;
import java.lang.reflect.Field;
public class LibraryDirUtils {
public static void addLibraryDir(String libraryPath) {
try {
Field userPathsField = ClassLoader.class.getDeclaredField("usr_paths");
userPathsField.setAccessible(true);
String[] paths = (String[]) userPathsField.get(null);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < paths.length; i++) {
if (libraryPath.equals(paths[i])) {
continue;
}
sb.append(paths[i]).append(';');
}
sb.append(libraryPath);
//修改java.library.path
System.setProperty("java.library.path", sb.toString());
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
sysPathsField.setAccessible(true);
//修改完成后重新将sys_paths置为null
sysPathsField.set(null, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
总结:想要通过File f = new File(“1.txt”); 来加载这个文件的话,1.txt必须位于工作目录下才能找到,默认的创建玩工程,比如:test 那么test项目的完整路径往往被idea默认为工作目录。
————
备注:当一个模块下有多个子模块时,如:
必须将server设置为mydog的模块
,那么以mydog为工作目录,才会在server中启动时,找到server/resources/conf.properties。
版权声明:本文为themagickeyjianan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。