java - 使用 exe4j 文件创建 setup.exe 后,编写程序不起作用

标签 java jar file-writing exe4j

我想创建日志文件并用 java 向该文件写入一些文本。我完成了该任务。当运行 jar 文件时,此代码运行良好。但是在使用 exe4j 文件创建 setup.exe 后,写入过程不起作用。有人知道如何执行此操作吗?

这是我获取 jar 文件所在目录的路径

File f = null;

 public String baseUrl() {
        try {
            if (f == null) {
                f = new File(Register.class.getProtectionDomain().getCodeSource().getLocation().toURI().getRawPath());
            }
            String path = f.getParent();
            return path;
        } catch (URISyntaxException ex) {
            System.out.println(ex);
        }
        return "";
    }

这是我的日志文件创建过程

    try {
    src.Log lg = new src.Log();
        lg.setAction(action);
        lg.setUserName(userName);
        lg.setDescription(description);
        lg.setTime(date);
        lg.setSyncPath(syncPath);
        lg.setMethod(method);

        String url = baseUrl();
        System.out.println(baseUrl());
        String directoryName = url + "/ResFile";

        File directory = new File(directoryName);
        if (!directory.exists()) {
            directory.mkdir();

        }

        File log = new File(directoryName + "/log.txt");

            if (log.exists() == false) {
                log.createNewFile();
            }
            try (PrintWriter out = new PrintWriter(new FileWriter(log, true))) {
                out.append(lg.toString());
            }

    } catch (Exception ex) {
        System.out.println(ex);
    }

最佳答案

如果您使用“JAR in EXE”模式,您的日志文件最终将位于临时目录中,因为这是在运行时提取 JAR 文件的位置。

要获取可执行文件所在的目录,可以使用

System.getProperty("install4j.exeDir")

关于java - 使用 exe4j 文件创建 setup.exe 后,编写程序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497087/

相关文章:

java - Autowiring 组件不直接引用

类插件架构的 Java 技巧

java - Java中编辑打开的.txt中的文件并替换为新数据的过程

sql-server - 当我使用 sp_OAMethod 写入文本文件时,没有任何显示

java - JPA 2 中仅基于一个纯字符串的孤立删除

java - 如何在以下代码中根据我的喜好设置 JTextArea 和 JTextField 的大小?

java - 如何检索字符串中某个值之后的所有记录

Java 9 - 在运行时动态添加 jar

java - 如何在 mac 中运行 .jar?

java - 为什么直接使用 print() 方法存储数据比将其存储在字符串中然后写入文件更快?