当.jar文件被转移到另一台计算机时,文件编写器无法正常工作

时间:2013-08-12 12:20:56

标签: java jar filewriter

我使用Netbeans创建了一个相对简单的GUI应用程序,可以访问mySQL数据库并为另一个GUI程序创建表。该程序将询问用户mySQL用户名和密码,将这些凭证以加密形式存储在记事本中,以便以后可以解密和读取,然后继续创建数据库组件。

我的程序在我的电脑上运行完美,当我尝试将程序传输到另一台计算机时会出现问题。当我运行可以在Netbeans的dir文件夹中找到的.jar文件时,数据库组件会正常创建,但是应该在C:驱动器中创建的记事本不会出现。

这会导致我的其他程序无法正常工作,因为它需要mySQL用户名和密码来创建与数据库的连接。我将这些代码用于文件编写器:

private static PrintWriter pw;
private static final String LOCATION = "C:\\Users\\DONOTDELETE.txt";

public static void Log(String user, String pass) {
    try {
        pw = new PrintWriter(new FileWriter(LOCATION));
        pw.println(Encryption.encrypt(user));
        pw.println(Encryption.encrypt(pass));
        pw.flush();
    } catch (Exception e) {
    }
}

预先感谢任何回复,现在我会尝试修改一下。

更新:我已经解决了这个问题!感谢大家的建议,我确定问题只是管理员访问的问题。 AFAIK,通常你不能以管理员身份运行.jar文件,因此我选择使用该程序将.jar文件更改为.exe文件:

Launch4j

再次感谢并帮助:)

3 个答案:

答案 0 :(得分:0)

检查该PC中的管理员权限,可能无法访问C驱动器。

答案 1 :(得分:0)

问题在于您使用的是硬编码路径,该路径在非Windows系统上不可用,并且在用户不是管理员的Windows系统上无法写入。而是使用properties file存储要存储凭据的路径。

答案 2 :(得分:0)

这种行为可能有几个原因。 首先,

} catch (Exception e) {
}

您刚刚吃掉异常,因此您无法确定究竟出了什么问题。如果您知道无法处理异常,请不要抓住它。让异常升级,它会帮助你知道到底出了什么问题。

其次,在写入或从指定目录读取时,您可能会遇到权限问题。当您吃掉异常时,控制台上不会显示任何内容。尝试打印异常的堆栈跟踪,它可以帮助您了解问题的主旨。