【问题标题】:java.io.FileNotFoundException: (Permission denied)java.io.FileNotFoundException:(权限被拒绝)
【发布时间】:2010-11-21 01:20:51
【问题描述】:

我正在阅读放置在 vista 上的文档文件夹中的文件。该字段确实存在于指定位置,但在尝试打开文件的输入流时仍然出现以下错误

java.io.FileNotFoundException:  (Permission denied)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at rtran.dao.CustomerDAO.insertCustomer(CustomerDAO.java:29)
        at rtran.action.AddCustomerAction.execute(AddCustomerAction.java:22)
        at rtran.controller.Controller.actionPerformed(Controller.java:85)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

关于如何解决这个问题的任何想法?

阿卜杜勒·哈利克

【问题讨论】:

    标签: java windows-vista file-permissions


    【解决方案1】:

    您是否可能正在尝试写入只读文件?从堆栈跟踪中,您正在调用插入方法。

    另外,您是否有权访问该文件?我的意思是对文件本身及其父目录(及其父目录等)的读取权限。

    【讨论】:

    • FileInputStream 调用失败,因此除非 java 尝试使用写入权限打开,即使 FileInputStream 只会读取数据,此特定调用似乎不太可能失败,因为文件是只读的/已经上面有一个写句柄。
    • 不,我已授予每个用户以及登录用户的完全访问权限,但仍然无法访问该文件
    【解决方案2】:

    似乎 java 进程没有读取文件的权限。你很可能正在使用 UAC 以及 MS 放入 Vista 中的所有其他烦人的东西。

    我会做以下事情:

    • 检查文件权限。
    • 使用“以管理员身份运行”选项运行 java 代码
    • 关闭 UAC 并始终以管理员权限运行所有内容

    【讨论】:

    • 不管是否烦人,关闭安全功能并继续像我们过去“在黑暗时代”那样以管理员身份做所有事情似乎不是一个有价值的建议。有了这样的提示,我们将永远无法让系统更安全。安全通常不方便,但安全带也是如此……
    • 为什么这与 Microsoft Windows UAC(一般)或 Vista(特别)有任何关系?问题和代码堆栈跟踪似乎都没有给出底层操作系统的任何指示。
    • 抱歉,提问者说的是“vista”(原文如此)。
    • 这似乎是合理的,丹尼。就在今天,我遇到了同样的错误,并以管理员身份运行 Eclipse 解决了它。
    【解决方案3】:

    从 1.6.0_14 开始,java 以不同于 1.6.0_13 的方式处理虚拟路径(符号链接),windows vista 在程序文件、文档和设置上大量使用它们。也许这是你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2019-02-26
      • 1970-01-01
      • 2014-11-01
      相关资源
      最近更新 更多