1
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Users\Kelvz1\AppData\Local\Temp\JNativeHook_6363198016012433909.dll: Access is denied

これらのエラーがあります。どうすれば修正できますか。一部のユーザーはこれらにアクセスできて問題ありませんが、一部のユーザーはアクセスできません。

4

1 に答える 1

3

これは奇妙なランダム エラーで、Windows 7 および Windows 8 で発生することがあります。Java が temp フォルダー内の DLL にアクセスしようとすると、ある日すべてがうまくいっているのに、突然アクセス拒否例外が発生します。

TEMP フォルダーを削除し、自動的に再作成させると、通常は問題が解決することがわかりました。

DLL を TEMP フォルダーに配置するコードの作成者である場合は、コードを変更して、代わりにこのパスの下のフォルダーに DLL を配置することをお勧めします。 \ローカル\

これは Microsoft Security Essentials が原因である可能性があることをどこかで読みましたが、この問題が発生したばかりのコンピューターにこれがインストールされているようには見えません。

jna.dll など、さまざまな DLL ファイルでこれが発生するのを見てきました。

JNA を使用していて、この問題がある場合は、temp ディレクトリのシステム プロパティを変更すると、JNA が別のディレクトリにファイルを作成します。このコードはこれで機能するはずです。

    String osName = System.getProperty("os.name");
    if (osName.toLowerCase().startsWith("windows")) {
        // we change the temp directory because sometimes Windows is stupid and doesn't want to load jna.dll from the temp directory
        File tempDir = new File(System.getenv("USERPROFILE") + "\\AppData\\Local\\MyCompany\\temp");
        System.out.println("Using temp dir: " + tempDir.getPath());
        tempDir.mkdirs();
        System.setProperty("java.io.tmpdir", tempDir.getPath());
    }
于 2014-01-23T14:12:11.287 に答える