Java错误无法为jnidispatch库创建临时文件

时间:2011-12-28 12:06:24

标签: java jna

尝试安装第三方java应用程序时遇到此错误无法为jnidispatch库创建临时文件:java.io.IOException:只读文件系统。

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

5 个答案:

答案 0 :(得分:12)

我刚才有同样的问题;该程序已经工作好几个月,突然出现这个错误。使用strace进行的一些快速调试表明它正在尝试打开:

/tmp/jna/jna6858279656331549999.tmp

当然/ tmp / jna是由另一个用户拥有的,在我的情况下是一周。我甚至无法开始解释程序如何整天正常工作然后突然失败,因为它无法写入此目录。

无论如何,我sumod chmod'd / tmp / jna到777,现在一切都很好。去图。

答案 1 :(得分:3)

因此,此应用程序正在尝试写入临时目录。这是哪里?它是特定于操作系统的。我不知道您正在运行哪个操作系统,但您可以使用示例here找到该位置。

请注意,如果您无法更改此应用程序写入位置的权限,则可以使用该系统属性(java.io.tmpdir)来提供新的临时目录位置。

答案 2 :(得分:0)

您无权在该位置编写文件

答案 3 :(得分:0)

您可能有另一个应用程序使用相同的目录/ tmn / jna,以这种方式更改其所有权。就我而言,这是Hudson CI。

您可以输入'ls -l / tmp'来检查哪个应用程序对'/ tmp / jna'拥有所有权。

Chmod / tmp / jna授予任何人(或当前用户)的访问权限,事情将恢复正常。

答案 4 :(得分:0)

即使在下载了特定的文件或所有内容后,我们也可能会遇到此错误。

文件创建失败可能是由于以下原因:
1.用户权限/ s(继承被处理)。
2.腐败档案。
3.文件被另一个应用程序同时访问 4.文件被反恶意软件/反病毒软件锁定。

奇怪的是我的防病毒软件将adb,avd和jndispatch.dll文件检测为不干净的文件。

我不得不从AVG保险库中恢复它们。 配置AVG忽略(添加文件夹到例外列表)所需的文件夹。

如果您没有防病毒并且仍然遇到此问题,请记住Windows 7及更高版本具有内置的Windows后卫&#39;。看看这个家伙是否在做同样的事情。将您的文件夹置于防病毒软件中排除&#39;列表,因为供应商在全球范围内受到信任。

同样的答案会转到&#39; Error in launching AVD with AMD processor&#39; 我没有足够的声誉在那里和那里回答这个问题。