如何跟踪基于javapackager的应用程序在macOS上启动时的作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何跟踪基于javapackager的应用程序在macOS上启动时的作用?相关的知识,希望对你有一定的参考价值。

我编写了一个基于Java的应用程序,用于使用Oracle的Java 8中的javapackager创建的macOS。它可以在几个月内完美地工作,可能是由于最近的Java更新,现在当我重新构建应用程序时,结果退出而没有任何消息执行时直接在终端shell(即使用java -jar path/to/my.jar)中运行jar文件本身可以正常工作而不会出错。我无法弄清楚.app版本出了什么问题,并且无法弄清楚如何从javapackager创建的任何东西中获取任何诊断信息。

我怎样才能追踪.app在运行时使用javapackager创建的内容?

我正在使用来自Oracles Java 1.8 u152的-deploy -native imagejavapackager选项在OSX 10.12.6上创建应用程序。我的问题是关于如何让生成的.app打印它正在做的事情,或者获得错误诊断或其他东西,以帮助弄清楚它在幕后做了什么。运行javapackager本身并不需要帮助。

我认为使用Console将有助于理解正在发生的事情,但信息太稀疏,难以解释。隐藏了很多其他进程输出后,归结为以下打印:

default 22:43:22.523842 -0800   taskgated   MacOS error: -67062
default 22:43:22.733680 -0800   SBML Test Runner    WARNING: The Gestalt selector gestaltSystemVersion is returning 10.9.6 instead of 10.12.6. This is not a bug in Gestalt -- it is a documented limitation. Use NSProcessInfo's operatingSystemVersion property to get correct system version number.
Call location:
default 22:43:22.733853 -0800   SBML Test Runner    0   CarbonCore                          0x00007fff97a4d1b1 ___Gestalt_SystemVersion_block_invoke + 121
default 22:43:22.733876 -0800   SBML Test Runner    1   libdispatch.dylib                   0x00007fffac28b8fc _dispatch_client_callout + 8
default 22:43:22.733897 -0800   SBML Test Runner    2   libdispatch.dylib                   0x00007fffac28b8b9 dispatch_once_f + 38
default 22:43:22.733930 -0800   SBML Test Runner    3   CarbonCore                          0x00007fff979db292 _Gestalt_SystemVersion + 976
default 22:43:22.733982 -0800   SBML Test Runner    4   CarbonCore                          0x00007fff979daaad Gestalt + 139
default 22:43:22.734010 -0800   SBML Test Runner    5   libswt-pi-cocoa-4628.jnilib         0x00000001283072de Java_org_eclipse_swt_internal_cocoa_OS_Gestalt + 158
default 22:43:22.734028 -0800   SBML Test Runner    6   ???                                 0x00000001067919f4 0x0 + 4403567092

虽然taskgated错误起初似乎有关,但一些谷歌搜索表明它是一个常见的问题,而不是致命的。

答案

首先,我将通过终端调用打包的应用程序包中的二进制文件来验证实际的JVM:

/Applications/MyApp.app/Contents/MacOS/MyApp

如果出现JVM错误,您将输出打印到stdout。如果您可以确认JVM正常启动,您可以使用jvisualvm进行进一步分析。

以上是关于如何跟踪基于javapackager的应用程序在macOS上启动时的作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何基于人体人脸跟踪实时监测心率?

当我在基于类的视图中应用过滤器时,如何在 django 中使用分页分页。网址总是不断变化我如何跟踪网址

使用基于位置的应用程序跟踪用户

目标跟踪(3)MultiTracker : 基于 OpenCV (C++/Python) 的多目标跟踪

如何准确跟踪内存使用情况?

在 C# 中如何收集程序崩溃的堆栈跟踪