我正在尝试使用从 Eclipse 或命令行运行的 Linux(我有正确版本的 GTK)上的 Oracle JVM(1.7u13)运行一个非常简单的 JavaFX 程序。当它开始时,它会抛出一个关于字体的异常抱怨。Font.getDefault() 也可能导致相同的 NPE。我可以使用 Font.getFontNames() 列出可用的字体,我可以看到 17 种字体,包括我认为是默认设置的“系统常规”。
任何想法都非常感谢!
堆栈跟踪....
线程“主”java.lang.RuntimeException 中的异常:应用程序启动方法中的异常 在 com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 在 com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 在 com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 在 java.lang.Thread.run(Thread.java:722) 引起:java.lang.NullPointerException 在 com.sun.t2k.LogicalFont.(LogicalFont.java:172) 在 com.sun.t2k.LogicalFont.getLogicalFont(LogicalFont.java:104) 在 com.sun.t2k.LogicalFont.getLogicalFont(LogicalFont.java:144) 在 com.sun.t2k.T2KFontFactory.createFont(T2KFontFactory.java:356) 在 com.sun.prism.j2d.J2DFontFactory.createFont(J2DFontFactory.java:38) 在 com.sun.javafx.font.PrismFontLoader.loadFont(PrismFontLoader.java:399) 在 javafx.scene.text.Font.(Font.java:282) 在 javafx.scene.text.Font.getDefault(Font.java:85) 在 com.me.FXProblem.start(FXProblem.java:23) 在 com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 在 com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215) 在 com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 在 com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176) 在 java.security.AccessController.doPrivileged(本机方法) 在 com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176) 在 com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76) 在 com.sun.glass.ui.gtk.GtkApplication._runLoop(本机方法) 在 com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:82) ... 1 更多
更新
获取错误的示例代码。我假设 Font.getDefault() 的路由原因是导致几个非常简单的 UI 节点不显示的原因。
package com.me;
import javafx.application.Application;
import javafx.scene.text.Font;
import javafx.stage.Stage;
/**
* Problem class to show the stack trace from Font.getDefault()
*/
public class FXProblem extends Application
{
/**
* {@inheritDoc}
*/
@Override
public void start(final Stage stage) throws Exception
{
Font.getDefault();
}
/**
* Main.
*/
public static void main(final String[] args)
{
launch();
}
}