java.io.FileNotFoundException:(不允许操作)错误与 ./keytool -import on mac osx (el capitan) - Java 6
java.io.FileNotFoundException: (Operation not permitted) error with ./keytool -import on mac osx (el capitan) - Java 6
正在尝试将 CA 证书导入我的 Java 6 信任库并 运行 出现此错误:
./keytool -v -import -trustcacerts -alias Rapidssl -file /Users/spurr/Desktop/rapidssl.cer -keystore /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
Enter keystore password:
Certificate was added to keystore
[Storing /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts]
keytool error: java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:84)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:902)
at sun.security.tools.KeyTool.run(KeyTool.java:172)
at sun.security.tools.KeyTool.main(KeyTool.java:166)
我也是 运行 该命令的 root 用户,所以我认为我可以访问该 cacerts 密钥库位置。使用 Java 6.
当异常状态为 (Operation not permitted)
-
时,这似乎是一个 mac 特定问题
对于遇到此问题的任何其他人,您需要重新启动 mac 并在启动时按 ⌘+R。然后进入 Utilities > Terminal 并输入以下命令:
csrutil disable
reboot
之后您应该能够将 cacerts 导入您的 Java 密钥库。导入该 cacert 后,不要忘记重新启用 csrutil
。重启,开机时按 ⌘+R,Utilities > Terminal,输入:
csrutil enable
reboot
我 运行 对 .metadata 目录下的文件感兴趣,因为我将 Eclipse 工作区放在 Documents 下。通过进入“系统偏好设置”->“隐私”并为 Eclipse 添加对特定文件和文件夹的访问权限或授予 Eclipse 全磁盘访问权限来解决此问题。
我在 MacOS Big Sur 上启动 jnlp 文件时遇到了类似的问题:
CouldNotLoadArgumentException[ Could not load file/URL specified: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp]
....
Caused by: java.io.FileNotFoundException: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp (Operation not permitted)
解决方案是:
- 授予 Java (
/usr/bin/java
) 完整磁盘 访问权限
- 授予 Java (
/usr/bin/java
) 文件和文件夹 访问下载、文档和文件夹的权限
步数
- 在 Finder 中打开
/usr/bin
,例如通过从终端调用:
jhartman@MBP ~ % open /usr/bin
本地化 java
(和 keytool
)
打开系统偏好设置和安全与隐私。打开 Full Disk Access 选项卡并授权
从第 1 步打开的 Finder window 中拖动 java
和 keytool
并放到 Full Disk Access[= 中的应用程序列表中62=]
- 转到安全和隐私 -> 文件和文件夹,勾选
java
和[的下载文件夹和文档文件夹=16=]
这是我的问题的解决方案,但我希望它也能解决 keytool
问题。
正在尝试将 CA 证书导入我的 Java 6 信任库并 运行 出现此错误:
./keytool -v -import -trustcacerts -alias Rapidssl -file /Users/spurr/Desktop/rapidssl.cer -keystore /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
Enter keystore password:
Certificate was added to keystore
[Storing /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts]
keytool error: java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
java.io.FileNotFoundException: /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts (Operation not permitted)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:194)
at java.io.FileOutputStream.<init>(FileOutputStream.java:84)
at sun.security.tools.KeyTool.doCommands(KeyTool.java:902)
at sun.security.tools.KeyTool.run(KeyTool.java:172)
at sun.security.tools.KeyTool.main(KeyTool.java:166)
我也是 运行 该命令的 root 用户,所以我认为我可以访问该 cacerts 密钥库位置。使用 Java 6.
当异常状态为 (Operation not permitted)
-
对于遇到此问题的任何其他人,您需要重新启动 mac 并在启动时按 ⌘+R。然后进入 Utilities > Terminal 并输入以下命令:
csrutil disable
reboot
之后您应该能够将 cacerts 导入您的 Java 密钥库。导入该 cacert 后,不要忘记重新启用 csrutil
。重启,开机时按 ⌘+R,Utilities > Terminal,输入:
csrutil enable
reboot
我 运行 对 .metadata 目录下的文件感兴趣,因为我将 Eclipse 工作区放在 Documents 下。通过进入“系统偏好设置”->“隐私”并为 Eclipse 添加对特定文件和文件夹的访问权限或授予 Eclipse 全磁盘访问权限来解决此问题。
我在 MacOS Big Sur 上启动 jnlp 文件时遇到了类似的问题:
CouldNotLoadArgumentException[ Could not load file/URL specified: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp]
....
Caused by: java.io.FileNotFoundException: /Users/jhartman/Documents/Favorities/NCC/NCC 123.jnlp (Operation not permitted)
解决方案是:
- 授予 Java (
/usr/bin/java
) 完整磁盘 访问权限 - 授予 Java (
/usr/bin/java
) 文件和文件夹 访问下载、文档和文件夹的权限
步数
- 在 Finder 中打开
/usr/bin
,例如通过从终端调用:
jhartman@MBP ~ % open /usr/bin
本地化
java
(和keytool
)打开系统偏好设置和安全与隐私。打开 Full Disk Access 选项卡并授权
从第 1 步打开的 Finder window 中拖动
java
和keytool
并放到 Full Disk Access[= 中的应用程序列表中62=]
- 转到安全和隐私 -> 文件和文件夹,勾选
java
和[的下载文件夹和文档文件夹=16=]
这是我的问题的解决方案,但我希望它也能解决 keytool
问题。