gpt4 book ai didi

java - 从 OSX ".app" bundle 运行 Java 会导致 "Error -10810"

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:29 26 4
gpt4 key购买 nike

这是通过虚拟机在 OSX Mavericks 上以及 MacBook 上的 Yosemite 上进行测试的。

我有一个名为“HelloWorld.jar”的简单可执行 jar。

我正在尝试为此 java 应用程序创建一个 .app 包。 (显然,我的实际程序更复杂,但我已将其缩减为最简单的问题)。

<小时/>

案例 1 - 无需 Java 的简单 bundle - 完全可以工作

第 1 步 - 在控制台进行测试 - 有效

在控制台我输入

echo“Hello World(无 java)”>/Users/josh/Desktop/test-output.txt

我查看 test-output.txt 并看到预期的输出。

第 2 步 - 使用脚本进行测试 - 有效

我制作了一个名为 test 的简单 bash 脚本:

 #!/bin/bash
echo "Hello World (no java)" > /Users/josh/Desktop/test-output.txt

chmod +x test 然后输入 ./test,我查看 test-output.txt 并看到预期的输出。

第 3 步 - 创建基本应用程序包 - 有效

mkdir -p test.app/Contents/MacOS
cp test test.app/Contents/MacOS
open test.app

我查看 test-output.txt 并看到预期的输出。

<小时/>

案例 2 - 简单的 JAVA bundle - 不起作用

设置

文件HelloWorld.java:

public class HelloWorld {
public static void main ( String[] args ) {
System.out.println ( "Hello World" );
}
}

文件myManifest

Main-Class: HelloWorld

在控制台执行以下操作:

javac HelloWorld.java
jar -cfm HelloWorld.jar myManifest HelloWorld.class

第 1 步 - 在控制台进行测试 - 有效

在控制台我输入:

java -jar HelloWorld.jar >/Users/josh/Desktop/java-output.txt

我得到了预期的输出:Hello World

第 2 步 - 使用脚本进行测试 - 有效

我制作了一个名为“helloworld”的简单 bash 脚本

 #!/bin/bash
java -jar HelloWorld.jar > /Users/josh/Desktop/java-output.txt

chmod +x helloworld 然后输入 ./helloworld,我得到了预期的输出:Hello World

第 3 步(使用 Java)- 不起作用

mkdir -p helloworld.app/Contents/MacOS
cp helloworld helloworld.app/Contents/MacOS
cp HelloWorld.jar helloworld.app/Contents/MacOS
open helloworld.app

我收到以下错误:

LSOpenURLsWithRole() 失败,文件/Users/josh/Desktop/helloworld/helloworld.app 出现错误 -10810

/user/Josh/desktop/java-output.txt 出现,但内部没有文本。

<小时/>

正如您所看到的,在 .app 包中运行 java 时似乎发生了一些事情,导致出现 -10810 错误。

注意:我还尝试了第一个示例的变体,其中我使用 bash 脚本启动/Applications/TextEdit.app,并且成功运行。这让我怀疑问题出在java上。

有人知道导致此问题的原因以及如何解决它吗?

最佳答案

我目前没有方便的 OS X 机器来测试这一点,但来自 another question 的网络提示似乎暗示您需要设置 JAVA_HOME 以及可能的 PATH 以使 java 在应用程序包中工作。

具体来说,在尝试运行程序之前,在 shell 脚本的顶部放置以下行,并对您的系统进行适当的更改。

export JAVA_HOME=/path/to/my/java/install
export PATH=$PATH:/path/to/directory/containing/java

更一般而言,要诊断问题的根本原因,请更改脚本中的现有行以捕获 stderr 并查看是否会为您提供任何有用的输出,否则这些输出可能会被应用环境吞没。

 java -jar HelloWorld.jar > /Users/josh/Desktop/java-output.txt  2>  /Users/josh/Desktop/java-error.txt

如果您能够捕获打印的错误,则可能足以向您显示根本原因。

关于java - 从 OSX ".app" bundle 运行 Java 会导致 "Error -10810",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com