【问题标题】:CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme:CFURLCopyResourcePropertyForKey 失败,因为它通过了这个没有方案的 URL:
【发布时间】:2012-07-31 21:02:30
【问题描述】:

我知道这是一个 xcode 警告/错误,但是,当我尝试从命令行运行 gitk --all 时会发生这种情况。

YuFei-Zhus-MacBook-Pro:test phil88530$ gitk --all
2012-08-02 21:14:49.246 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:49.252 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:49.293 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:49.295 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:49.474 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:49.476 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:50.731 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
2012-08-02 21:14:50.734 Wish[33464:707] CFURLCopyResourcePropertyForKey failed because it was passed this URL which has no scheme: 
YuFei-Zhus-MacBook-Pro:test phil88530$ 

我刚刚更换了一个新磁盘并重新安装了 osx 并更新到山狮,安装了 x11 和 xcode。有什么建议为什么会发生这种情况?

【问题讨论】:

  • 升级到 Mountain Lion(并安装 XQuartz X11)后,我看到了同样的错误。使用 Apple 的 X11 的 Lion 不会发生这种情况。
  • 在全新安装 ML 时出现同样的问题。
  • 升级到 Mountain Lion 并安装 XQuartz 后出现同样的问题。
  • 升级到 SSD 和 Mountain Lion 后出现同样的问题。我向 git bug 报告邮件列表发送了一封电子邮件。

标签: xcode macos git command-line terminal


【解决方案1】:

我刚才遇到了这个错误,正在寻找解决方法。

我试图在我的项目中调用函数 getResourceValue:forKey:error: 并且我的操作系统版本是 10.7.5。

我用+URLWithString:初始化了一个新的NSURL对象,之前也出现过这个问题,用+fileURLWithPath:替换后,现在好了。

具有不同功能的两个对象之间的差异值为 /卷/数据/a 文件://localhost/Volumes/Data/a/

Apple 在下面声明了关于 NSURL 类:

处理对象创建失败 如果传递的路径格式不正确,则 NSURL 类无法创建新的 NSURL 对象;路径必须符合 RFC 2396。不成功的例子是包含空格字符和高位字符的字符串。如果创建 NSURL 对象失败,创建方法返回 nil,您必须准备好处理它。如果你使用文件系统路径创建 NSURL 对象,你应该使用 fileURLWithPath: 或 initFileURLWithPath:,它们处理 URL 路径和文件系统路径之间的细微差别。如果您希望容忍格式错误的路径字符串,则需要使用 Core Foundation 框架提供的函数来清理字符串。

【讨论】:

  • 我喜欢你的回答。但它实际上并没有说明如何解决问题。你破解了 gitk 代码吗?如果有,怎么做?
  • 抱歉,我还没试过。
  • 谢谢。以“file://localhost/”为前缀的路径对我有用。
【解决方案2】:

这篇博文解决了我的问题:

http://blog.jasonsemko.com/post/51668282398/easy-fix-for-cfurlcopyresourcepropertyforkey-failed

总而言之,gitk 没有正确解析 Xcode 附带的 git 版本字符串,并且正在吐出额外的细节。

所以要修复,你可以安装一个带有干净版本号的 git。

brew install git

您可能需要通过更改在您的PATH 中搜索的顺序目录来确保调用brew 的git 版本(例如,我必须在/usr/bin 之前加载/usr/bin/local)。或者,您可以将 git 别名为 brew 安装的绝对路径。

【讨论】:

  • 使用自制的 git 似乎比在 Apple 的 git 中使用自制的 Tcl/Tk 更好。 (或者只是隐藏错误。)赞成。
【解决方案3】:

用新版本的 tcl-tk 运行 gitk 似乎可以解决这个问题(用 Mac OS X 10.8.4 测试)。如果您安装了 Homebrew,以下应该可以工作:

  1. 从命令行运行:brew install tcl-tk
  2. 然后将以下内容添加到您的 .bashrc 或 .bash_profile 中:alias gitk='"$(brew --prefix tcl-tk)/bin/wish" "$(which gitk)"'

重启终端后,你应该可以正常运行 gitk 而不会看到任何“CFURLCopyResourcePropertyForKey”错误。

【讨论】:

  • 如果您还没有这样做,您可能必须在 brew install tcl-tk 之前运行 brew tap homebrew/dupes
  • 这打破了 gitk 的偏好部分,包括颜色,而且它以某种方式模糊了左下部分的文本字形。
【解决方案4】:

在 Mountain Lion 10.8.2 上,我修复了安装/升级 tcl 和 tk 的问题——正如 tair 所述。

brew 安装 tcl
酿造安装 tk

gitk 的 UI 可能会改变,但你可以在 ~/.gitk 中进行调整。

【讨论】:

  • 这个答案实际上解决了问题,而不是抑制错误。
  • 它还改变了热键、cmd-tab 功能、键盘重复速度(可以修复)。我最终恢复了 =\
  • @Kache 您能否提供有关热键和 kbd 速度问题的更多详细信息,所以我尝试使用 Macports 重现这些问题。也无法解决 cmd-tab 问题——不是 OSX 保留的吗?
  • @tair 之前,gitk 以“Wish”的形式打开。之后,它被打开为“X11”。 X11 的默认键盘重复速度非常慢,因此解决方案:superuser.com/questions/414237/key-repeat-x11-xterm-urxvt。 cmd-tab 问题可能与我在 Mac 上使用 Witch 有关。 Wish 是 cmd-tabable 正常的。 X11 的窗口在失去焦点并在 Witch cmd-tab 列表中降低优先级后“进入睡眠”/“隐藏”,Witch 需要“激活”或“重新启动”窗口。我不知道如何更简洁地解释它。
  • @Kache 我唯一的问题是你所说的 cmd-tab ——我什至在 Tcl/Tk 更新之前就有了它,是的,这很烦人:(
【解决方案5】:

如果您是 MacPorts 用户,请将 tcl/tk 升级到 8.6.0:

$ sudo port install tcl tk

【讨论】:

    【解决方案6】:

    alias gk='gitk --all 2> /dev/null &'(我在mac上)

    我在 ~/.bash_login 文件中有它,它解决了它:D

    你也可以把它放到 .bashrc 文件中

    【讨论】:

      【解决方案7】:
      $ alias gitk='gitk 2>/dev/null'
      

      我在这里也有同样的问题。在有人回答此解决方案之前,这是一个快速提示。

      【讨论】:

      • 对于我们这些将别名放入~/.bash_profile 或类似名称但不想退出/返回shell 的人:运行$ .<space> ~/.bash_profile 来激活
      • . ~/.bash_profile$ source ~/.bash_profile 好吗?
      • 注意:这只是隐藏错误消息* 别名只是将 gitk 的 stderr 输出(文件设备 2)重定向到 /dev/null,从而永远屏蔽 gitk 生成的所有错误.可能没什么大不了的,但如果你正在使用它,你应该知道它在做什么。
      • 这听起来不是一个好的长期答案。有没有人向 gitk 维护人员报告过这个问题?另一种选择是改用git cola,它在git dag 下具有类似的功能。虽然我仍然希望看到这个修复
      • 您应该编辑您的帖子以阐明您的快速提示的作用。
      猜你喜欢
      • 2014-11-22
      • 2017-12-20
      • 1970-01-01
      • 2010-12-13
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多