首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileHandler在FileKey引起IOException

FileHandler在FileKey引起IOException
EN

Stack Overflow用户
提问于 2015-02-26 15:58:40
回答 1查看 427关注 0票数 0

我从PLSQL调用一个java类。我的Logger.java用字符串"C:\Logs\mylog.TXT“调用FileHandler

代码语言:javascript
复制
fileHndlr = new FileHandler(logFileName, false);

结果是:

代码语言:javascript
复制
Exception in thread "Root Thread" java.lang.Error: java.io.IOException: sjonfile_fileinfo fais to get fileinfo
    at sun.nio.ch.FileKey.create(FileKey.java:41)
    at sun.nio.ch.FileChannelImpl$SharedFileLockTable.<init>(FileChannelImpl.java:1037)
    at sun.nio.ch.FileChannelImpl.fileLockTable(FileChannelImpl.java:806)
    at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:867)
    at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
    at java.util.logging.FileHandler.openFiles(FileHandler.java:394)
    at java.util.logging.FileHandler.<init>(FileHandler.java:268)
    at xxx.logger.Logger.logSetup(Logger.java:194)
Caused by: java.io.IOException: sjonfile_fileinfo fais to get fileinfo
    at sun.nio.ch.FileKey.init(Native Method)
    at sun.nio.ch.FileKey.create(FileKey.java:39)
    ... 9 more

似乎缺少一些权限来创建文件,需要检查什么?

更新:

我们将进程监视器安装到发生文件操作的服务器上,并发现了两个可疑事件:

1) QueryAllInformationFile缓冲区溢出错误

代码语言:javascript
复制
Date & Time:    2015.03.02. 9:23:14
Event Class:    File System
Operation:  QueryAllInformationFile
Result: BUFFER OVERFLOW
Path:   C:\Logs\...\filename.lck
TID:    2708
Duration:   0.0000138
CreationTime:   2015.02.25. 15:49:13
LastAccessTime: 2015.02.25. 15:49:13
LastWriteTime:  2015.03.02. 9:23:14
ChangeTime: 2015.03.02. 9:23:14
FileAttributes: A
AllocationSize: 0
EndOfFile:  0
NumberOfLinks:  1
DeletePending:  False
Directory:  False
IndexNumber:    0x1500000007d793
EaSize: 0
Access: Generic Write, Read Attributes
Position:   0
Mode:   Synchronous IO Non-Alert
AlignmentRequirement:   Long

2)在CreateFile操作中共享违规错误

代码语言:javascript
复制
Date & Time:    2015.03.02. 9:23:20
Event Class:    File System
Operation:  CreateFile
Result: SHARING VIOLATION
Path:   C:\Logs\...\filename.lck
TID:    2708
Duration:   0.0000284
Desired Access: Read Attributes, Delete
Disposition:    Open
Options:    Non-Directory File, Open Reparse Point
Attributes: n/a
ShareMode:  Read, Write, Delete
AllocationSize: n/a 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 13:30:23

需要对sysdba用户执行以下操作:

代码语言:javascript
复制
GRANT READ,WRITE ON DIRECTORY userDirectory TO userSchema;

Execute dbms_java.grant_permission('userSchema', 'java.io.FilePermission', 'userDirectory/*', 'read,write,execute,delete');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28747025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档