Java error failed to create temporary file for jnidispatch library

我的未来我决定 提交于 2019-12-22 18:26:50

问题


While trying to install a third part java application I got this error Failed to create temporary file for jnidispatch library: java.io.IOException: Read-only file system.

java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.rzo.yajsw.boot.WrapperExeBooter.main(WrapperExeBooter.java:35)
Caused by: java.lang.Error: Failed to create temporary file for jnidispatch library: java.io.IOException: Read-only file system
        at com.sun.jna.Native.loadNativeLibraryFromJar(Native.java:751)
        at com.sun.jna.Native.loadNativeLibrary(Native.java:685)
        at com.sun.jna.Native.<clinit>(Native.java:109)
        at com.sun.jna.Pointer.<clinit>(Pointer.java:42)
        at com.sun.jna.PointerType.<init>(PointerType.java:25)
        at com.sun.jna.ptr.ByReference.<init>(ByReference.java:32)
        at com.sun.jna.ptr.IntByReference.<init>(IntByReference.java:22)
        at com.sun.jna.ptr.IntByReference.<init>(IntByReference.java:18)
        at org.rzo.yajsw.os.posix.PosixProcess.<init>(PosixProcess.java:43)
        at org.rzo.yajsw.os.posix.OperatingSystemPosix.setWorkingDir(OperatingSystemPosix.java:10)
        at org.rzo.yajsw.WrapperExe.main(WrapperExe.java:163)
        ... 5 more

回答1:


I just had this exact same problem; the program had been working fine for months and suddenly this error. Some quick debugging with strace shows that it's trying to open:

/tmp/jna/jna6858279656331549999.tmp

Naturally /tmp/jna was owned by another user, and in my case was a week old. I can't even start to explain how the program had been working properly all day and then suddenly fail because it cannot write to this directory.

Anyhow, I sudo chmod'd /tmp/jna to 777 and now everything's fine. Go figure.




回答2:


So this application is trying to write to the temp directory. Where is this ? It's OS-specific. I don't know which OS you're running, but you can find the location by using the examples here.

Note that you may be able to use that system property (java.io.tmpdir) to provide a new temp directory location, if you can't change the permissions of where this application is writing to.




回答3:


You don't have permission to write file on that location




回答4:


You're likely to have another application using the same directory, /tmn/jna, in such a way to have changed its ownership. In my case it was the Hudson CI.

You can check which application has ownership on '/tmp/jna' by typing 'ls -l /tmp'.

Chmod /tmp/jna to grant access to anyone (or to your current user) and things will come back to normality.




回答5:


even after downloading specific required file or everything, we could face this error.

a file creation fail could be due to following reasons:
1. user permission/s (inheritance manhandled).
2. corrupt file.
3. file being accessed by another application at the same time.
4. file being locked by anti-malware / anti-virus software.

strangely my antivirus detected adb, avd and jndispatch.dll files as unclean files.

i had to restore them from AVG vault. configure AVG to ignore (add folder to exception list) required folder.

if you are without antivirus and still facing this problem, remember that windows 7 and above have inbuilt 'windows defender'. see whether this fellow is doing the same thing. put your folder in antivirus 'exclusion' list as the vendor is trusted world wide.

this same answer would go to 'Error in launching AVD with AMD processor'.
i didn't had enough reputation to answer this question there and there.



来源:https://stackoverflow.com/questions/8655712/java-error-failed-to-create-temporary-file-for-jnidispatch-library

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!