【问题标题】:NSTask launch path error [duplicate]NSTask 启动路径错误 [重复]
【发布时间】:2012-10-17 16:19:01
【问题描述】:

可能重复:
NSTask launch path not accessible

任何想法为什么要调用这个,

NSTask *buildMTask = [[NSTask alloc] init];
[buildMTask setLaunchPath:@"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\\ Simulator.app/Contents/MacOS/iPhone\\ Simulator"];
[buildMTask launch];

结果

'启动路径不可访问'?

谢谢!

【问题讨论】:

  • 你为什么要转义空格字符?它应该是文件的路径,因此不应转义空格
  • 空格是否转义没有任何区别...同样的错误发生...
  • stackoverflow.com/questions/3221432/… 是关于启动一个shell脚本,所以我不认为它是重复的。
  • 您确定在这两种情况下都删除了 `\\` 吗?因为它可以在我的电脑上运行。 - 或者您正在构建沙盒应用程序?

标签: objective-c


【解决方案1】:
NSString *appname = @"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator";
NSTask *aTask = [[NSTask alloc] init];
[aTask setLaunchPath:appname];
BOOL exists = [[NSFileManager defaultManager] isExecutableFileAtPath:[aTask launchPath]];
NSLog(@"%@ '%@'\n", exists ? @"Exists" : @"Does Not Exist", [aTask launchPath]);
[aTask launch];

工作正常,甚至记录可执行文件存在。删除可执行文件名称中的\\ - 全部删除。

我建议在尝试运行应用程序之前使用可执行文件存在检查。

【讨论】:

  • 如果无法执行,那我们该怎么办呢?在运行时运行 chmod?
  • NSTask 将可执行文件作为第一个选项,如果有问题的项目不是可执行文件,那么您应该问为什么。如果只是它是一个脚本并且它没有设置为可执行文件,那么按照这个问题被标记为重复的答案的建议。如果它在应用程序包中并且未标记为可执行文件,那么您的构建不正确。
猜你喜欢
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 1970-01-01
相关资源
最近更新 更多