Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Users\Kelvz1\AppData\Local\Temp\JNativeHook_6363198016012433909.dll: Access is denied
これらのエラーがあります。どうすれば修正できますか。一部のユーザーはこれらにアクセスできて問題ありませんが、一部のユーザーはアクセスできません。
これは奇妙なランダム エラーで、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());
}