桑巴共享+;Gradle=Java IO异常

桑巴共享+;Gradle=Java IO异常,java,android-studio,gradle,samba,osx-server,Java,Android Studio,Gradle,Samba,Osx Server,我正在使用一个新的MacOSX服务器(OSX10.11),带有OpenDirectory和用于远程家庭设置的samba共享。 在这个设置中使用Android Studio会导致gradle出现一些问题。Gradle试图锁定缓存目录中的文件,这会引发java IOException。我可以把问题集中到这个演示代码上: import java.io.*; import java.nio.channels.FileChannel; import java.nio.channels.FileLock;

我正在使用一个新的MacOSX服务器(OSX10.11),带有OpenDirectory和用于远程家庭设置的samba共享。 在这个设置中使用Android Studio会导致gradle出现一些问题。Gradle试图锁定缓存目录中的文件,这会引发java IOException。我可以把问题集中到这个演示代码上:

import java.io.*;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;

public class FileLockTest {

    public static void main(String[] args) throws Exception {
        RandomAccessFile file = null;
        FileLock fileLock = null;
        try
        {
            file = new RandomAccessFile(args[0], "rw");
            FileChannel fileChannel = file.getChannel();

            fileLock = fileChannel.tryLock();
            if (fileLock != null){
                System.out.println("File is locked");
            }
        } finally{
            if (fileLock != null){
                fileLock.release();
            }
        }
    }
}
以文件名作为第一个参数编译并运行此文件显示了问题:本地文件可能会被锁定(无论这意味着什么),但samba共享上的文件会引发此异常:

Exception in thread "main" java.io.IOException: Operation not supported
    at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
    at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:90)
    at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1114)
    at java.nio.channels.FileChannel.tryLock(FileChannel.java:1155)
    at FileLockTest.main(FileLockTest.java:15)
现在我的问题是:有没有办法在mac OS X服务器上为samba共享启用文件锁定功能?我是否错过了samba服务器的一些棘手的设置


这确实使得在OpenDirectory设置下使用Android Studio(/gradle)变得不可能。

AFP共享也会导致同样的问题(在OS X 10.10.5下)。我相信在OSXJRE中有很多文件锁定机制还没有实现。实际上,可能不是JRE没有实现锁定。根据OSX的说法,它不支持通过
fcntl
锁定。