【问题标题】:Filewriter not working when .jar File is transfered to another Computer.jar 文件传输到另一台计算机时,Filewriter 不工作
【发布时间】:2013-08-13 18:09:28
【问题描述】:

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

我的程序在我的 PC 上完美运行,当我尝试将程序传输到另一台计算机时出现问题。当我运行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

再次感谢您的帮助:)

【问题讨论】:

  • 您的 Windows 用户可能没有写入 C:\users 目录的所有权限。尝试写入临时目录 (%temp%)
  • 这是非常糟糕的编程习惯。你只是在吃掉引发的异常。然后,您将如何确定实际发生了什么异常。
  • 更改 (1) 程序,从命令行获取 LOCATION 作为输入,以使您的程序更灵活。 (2) 打印异常的堆栈跟踪。
  • Ankur 注意到,我会尝试看看是否收到异常。 MrSimpleMind 我会试着看看你所说的

标签: java jar filewriter


【解决方案1】:

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

} catch (Exception e) {
}

您刚刚吃掉了异常,因此您无法确定到底出了什么问题。如果您知道您无法处理异常,请不要捕获它。让异常被引发,它会帮助你知道到底出了什么问题。

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

【讨论】:

  • 你一针见血,Ankur。我觉得很愚蠢,我什至没有检查许可。我能做些什么来解决这个问题?我看不到以管理员或类似身份运行它的选项。
  • 尝试使用其他目录,也许完全在不同的驱动器中。很多时候,您没有权限对 C 盘执行写操作。
【解决方案2】:

检查那台电脑的管理员权限,可能C盘无法访问。

【讨论】:

  • 确保在 C: 中有一个 Users 文件夹
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多