【maven工程中工作目录】1.决定File file = new File(“此路径将从工作目录开始查找“)

  • Post author:
  • Post category:其他


———–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 版权协议,转载请附上原文出处链接和本声明。