0

好的,所以我实际上已经在 J​​avaFX 中完成了我的程序,并且一切运行良好,但是我需要能够打印两个报告,你不知道吗?JavaFX 不支持打印!

我一直在尝试通过制作一个从 JavaFX 导入所有数据的 JFrame 来解决这个问题,但它一直不显示 JFrame 并给我以下错误:

2013-07-25 16:58:05.334 java[2150:707] [JRSAppKitAWT markAppIsDaemon]:进程管理器已初始化:无法完全启用无头模式。

我认为发生这种情况是因为 JRE 的同一个实例不能同时运行 FX 和显示 Swing JFrame?因为如果单独运行相同的代码将起作用(只是没有来自 FX 应用程序的数据显示在报告中)。

所以我的问题是,是否有不需要我将所有 FX 代码重写到 Swing 的解决方法?正在使用的打印机是通用/纯文本点阵打印机,所以我试图将数据导入 JFrame,因为这样打印整个文本框架会很容易。也许我的 JFX 报告生成器可以在新的 JRE 中打开 JFrame?或者有没有办法让它在同一个JRE中工作?我确实需要将它无缝集成到现有系统中,以便用户可以从 JFX GUI 生成报告并自动打印,而不是生成报告,然后转到另一个 (Swing) GUI 进行打印。

帮助!

好的,所以我尝试了使用 Java 8 测试版的建议答案,但现在没有任何效果。我收到以下错误:

线程“main”中的异常 java.lang.UnsupportedClassVersionError: com/javafx/main/Main : java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java) 中不受支持的 major.minor 52.0 版:791) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:71) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在java.net.URLClassLoader$1.run(URLClassLoader.java:361) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader。 findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:423) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:356) 在 sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) Java 结果:1

4

1 回答 1

1

使用Java 8,它支持JavaFX 打印

如果您想重用现有的基于 Swing 的报告代码,Java 8 还支持在 JavaFX 应用程序中嵌入SwingNode 。

谢谢,但是 Java8 的正式发布还需要一年时间,不是吗?

Java 8 的发布日期目前是 2014/03/18

不支持的 major.minor 版本 52.0

看起来您使用 Java 8 编译了该应用程序,然后尝试在 Java 7 上运行它。

请参阅相关: 如何修复 java.lang.UnsupportedClassVersionError: Unsupported major.minor version

没有其他方法可以解决这个问题吗?

没有我会推荐的。

于 2013-07-26T02:31:40.607 回答