FileChannel.tryLock导致java.io.IOException:函数不正确

时间:2014-08-19 18:53:57

标签: java windows-7 io

可能导致这种情况的原因是什么?我有一个我编写的Java程序在Java 6u33和Java 7u67的Windows 7 PC上工作正常,但是在Windows 7下运行Java 7u67的同事的PC上,我收到一个错误:

Exception in thread "main" java.lang.Error: java.io.IOException: Incorrect function
        at sun.nio.ch.FileKey.create(Unknown Source)
        at sun.nio.ch.SharedFileLockTable.<init>(Unknown Source)
        at sun.nio.ch.FileLockTable.newSharedFileLockTable(Unknown Source)
        at sun.nio.ch.FileChannelImpl.fileLockTable(Unknown Source)
        at sun.nio.ch.FileChannelImpl.tryLock(Unknown Source)
        at java.nio.channels.FileChannel.tryLock(Unknown Source)

我无法解决实际导致此错误的问题以及如何解决此问题。


嗯。显然这是Java包装底层操作系统错误(https://bugs.openjdk.java.net/browse/JDK-8025619)。是什么原因导致Windows中出现“不正确的功能”错误?

1 个答案:

答案 0 :(得分:1)

唉。它实际上与Java无关,而且与Windows下的保留文件名有关。

我正在尝试创建一个COMnn.LOCK形式的文件,在我的电脑上,我正在使用COM13.LOCK(Windows下的合法文件名),但在我的同事的PC上它是COM5.LOCK,显然Windows下的非法文件名;任何带有COMn的文件名(其中n是任意1位数字),任何扩展名都是非法的。 &GT;:(

请参阅What are reserved filenames for various platforms?