作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 Cocoa 应用程序中执行一个 jar。我的研究告诉我应该使用 NSTask。但是,我只能让 system()
工作。例如:
// This works
system("cd /path/to ; /usr/bin/java -jar file.jar");
但这不起作用:
// This does not work
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/java"];
[task setArguments:[NSArray arrayWithObjects: @"-jar", @"/path/to/test.jar", nil] ];
[task launch];
当我运行我的应用程序时,我收到一个类未找到 Java 异常,因为它找不到其依赖项。
最佳答案
你的代码没有一般错误,我自己试了一下。
我假设您已经在 .profile、.bashrc 或其他任何内容中定义了执行以下命令所需的 CLASSPATH 环境变量Java 文件。
system()
使用 shell 执行命令,因此 CLASSPATH 由 java
继承。命令。
NSTask
另一方面不使用shell,所以java
不会从您的个人资料中了解 CLASSPATH。
解决方案是添加 @"-cp", @"<your class path>"
论据。
更新
正如讨论中所表明的,本例中的问题不是类路径,而是当前工作目录。添加
[task setCurrentDirectoryPath:@"/path/to"]
解决了问题。
关于objective-c - 如何在 Cocoa 应用程序中打开 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11947609/
我是一名优秀的程序员,十分优秀!