- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果您在JavaFX-Launcher Thread
中放置无限循环,您的应用程序将永远不会启动。据我所知,它在不同的线程
上运行,那么为什么会发生这种情况呢?
只需创建一个新项目并覆盖 init()
并添加一个永远循环。
// Mine is not forever
boolean go = true;
@Override
public void init() throws Exception {
// TODO Auto-generated method stub
super.init(); // 'while' comes after this line
while(go){} // Comment this guy and everything is ayt
}
@Override
public void stop() throws Exception {
// TODO Auto-generated method stub
go = false;
super.stop();
}
这是否意味着 JavaFX-Launcher Thread
应在应用程序 UI 启动之前退出(即 javaFxApplication 线程),或者我遗漏了某些内容?
如果JavaFX-Launcher
应该是在应用程序启动之前启动应用程序需要的替代方案,为什么它不能并发,因为如果我希望它在我只需将代码放在 super.init()
方法之前?
最佳答案
直接解释正在发生的事情
应用程序的文档 start方法明确说明正在发生的事情:
The start method is called after the init method has returned, and after the system is ready for the application to begin running.
因此,如果您在 init 方法中运行一个永远不会返回的无限循环,您的应用程序将永远不会启动。
有关应用程序生命周期的更多文档位于 Application javadoc。
一些旁白、猜测和可能相关的信息
以下信息可能与您当前的问题相关,也可能无关。
我相信 init 方法背后的想法是,您可以将逻辑放入 init 方法中,该方法可以在 JavaFX 系统本身初始化时执行。 JavaFX 系统的初始化需要一定的时间,但在现代处理系统上,我预计这不会是很长的时间(例如不到一秒)。
我见过的大多数 JavaFX 应用程序都没有太多使用 init方法。
如果您的初始化很长,并且您希望应用程序在初始化完成之前快速启动,您将需要一些显式逻辑来处理该问题。
例如,创建 JavaFX Task在您自己的线程上运行的 init 方法中。在那里执行初始化。在您的启动方法中立即显示一个 UI,但功能有限。初始化完全完成后(监听器可以了解初始化任务的状态),然后启用依赖于初始化数据完全可用的全功能 UI。尽管不完全相同(因为它从启动而不是初始化运行一些任务逻辑),但此方法的一个非常相似的示例在此要点示例中,即“Displays a JavaFX splash page for an intensive startup task with progress monitoring ”。
JavaFX 确实有 Preloader 的概念它提供了一个内置框架来处理冗长的初始化,但是我还没有看到它被广泛使用。 Preloader 本身主要针对通过插件或 Java Web Start 嵌入网页中的 Java。这些并不是与 JavaFX 结合使用较多的技术。大多数 JavaFX 应用程序都是独立应用程序,不依赖网页插件或 Web 启动来执行。您可以使用预加载器框架来初始化应用程序(即使它在独立模式下工作),但为此目的使用任务可能更简单。有关Preloader使用的更多信息,可以引用:How to use javaFX Preloader with stand-alone application in Eclipse? (请注意,尽管问题是针对 Eclipse,但答案并不是特定于 Eclipse 的)。
关于java - JavaFX-Launcher 中的循环阻止 JavaFX 应用程序线程启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32915971/
和这个一样,但还是没弄明白。尝试了所有解决方案.... Maven error: Could not find or load main class org.codehaus.plexus.class
我想知道是否可以为 Android 开发 App Launcher 应用程序。我指的是不同供应商推出的应用程序启动器,即 Microsoft App Launcher、Google App Launc
我正在尝试运行以下示例单元测试用例 class ExampleUnitTest { @Test fun addition_is_Correct() { assertEq
我已经在 Git Bash(64 位)上使用 Maven 几个月了,突然它停止工作,并且现在在任何 Maven 命令上生成此错误: myuser@mypc MINGW64 ~ (master *) $
在我们的项目中,我们使用 IBM J9 Java VM 和旧版本的 Equinox OSGi 框架 (org.eclipse.osgi_3.6.1.R36x_v20100806.jar)。是否可以将此
我正在尝试在 Ubuntu 14.04 64 位中安装 spark 客户端 IM,但它会抛出错误 Could not find or load main class com.install4j.run
我已经通过 CLi 在 Linux Mint 上安装了最新的 maven-3.2.5安装详情如下: export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
我已在 Windows 7 上安装了最新的 maven-3.0.4: 安装详情如下: 安装路径: C:\apache-maven-3.0.4 环境变量是: M2_HOME C:\apache-mav
这个问题在这里已经有了答案: Maven error: Could not find or load main class org.codehaus.plexus.classworlds.launc
我正在使用 Windows 10,并且我已按照说明中的说明设置了路径 设置 M2_HOME (E:\softwares\apache-maven-3.3.9) 设置 M2 (%M2_HOME%\bin
我已经安装了 maven 2。当我在应用程序根目录中使用 mvn clean 或 mvn install 时,它工作正常。 但是当我尝试在 bash 脚本中使用 maven install 时,出现了
我知道这个问题已经在几个问题中讨论过,但没有答案解决我的具体问题。 我已经安装了 Git bash 和 Maven,我正在尝试使用 Git bash 执行 Maven。它因上述错误而中止。 我的系统环
manifest 中 launcher activity 的 launchMode 是否被忽略?android 文档说默认 launchMode 是“标准”,但如果这将应用于应用程序的主要 Activ
进程文件: launcher or launcher.exe 进程名称: Webshots Launcher 进程类别:存在安全风险的进程 英文描述: launcher.exe is an
我是 Python 和 Pygame 的新手,现在我正在尝试用一些简单的代码打开一个测试窗口: import pygame, sys from pygame.locals import * pygam
我们正在使用 eclipse 的共享安装(RAD 7.0,在 Citrix 下)。我们需要允许每个开发人员提供 eclipse.ini 的本地副本。 “--launcher.ini”命令行开关应该允许
我一直在尝试在运行的 Eclipse session 中从命令行打开文件。基于documentation ,我应该可以做到 eclipse --launcher.openFile myfilename
我们正在使用 eclipse 的共享安装(RAD 7.0,在 Citrix 下)。我们需要允许每个开发人员提供 eclipse.ini 的本地副本。 “--launcher.ini”命令行开关应该允许
我正在尝试为 Minecraft 制作自定义启动器。我只是想让它从我自己的服务器下载主 jar 文件,没有别的。我反编译了一个文件(Launcher.java)并将下载网址从“https://s3.a
我正在开发一个可以读取汽车数据的应用程序。 当用户第一次打开它时,他必须选择他驾驶的汽车(这是在 MainActivity 中)。 我想做的是,用户在打开应用程序时不能总是选择他的车。 App应在用户
我是一名优秀的程序员,十分优秀!