【问题标题】:Why does JavaFX work differently outside NetBeans?为什么 JavaFX 在 NetBeans 之外的工作方式不同?
【发布时间】:2016-05-25 11:50:31
【问题描述】:

我使用 Netbeans 8.1 和 JavaFX 制作了一个 Java 应用程序 (JDK 1.7)。

基本思想是一个充满字母的网格,行和列依次突出显示,以允许人们通过单次按键(空格键)选择一个字母。一旦字符数等于或大于 3,我就实现了一个自动完成功能,该功能会获取以这些字母开头的单词并按词汇频率对它们进行排名。

当我从 IDE 内部运行项目时效果非常好,但是当我尝试在 IDE 外部运行它时,会发生以下情况:

  • 当我启动程序时,输入长时间不起作用(10-15 秒......虽然有时它几乎立即工作,有时需要更多时间)......但是一旦它开始检测我的钥匙再次按下,它的工作时间为 100%。它不限于空格键(还有“+”和“-”用于控制突出显示的速度)。此外,程序没有冻结,我可以很好地调整内容的大小,并且行/列是动画的。
  • 我还在我放置自动完成建议的行旁边放置了一个标签。所述标签应该倾斜-90°。每当我从 Netbeans 外部运行它时,它就会失去旋转。注意:我没有使用 CSS 文件,我使用了 .SetStyle()。

仅仅因为我没有从 Netbeans 运行应用程序,它的行为会有何不同?

感谢您的回答!

【问题讨论】:

  • 在外部运行之前,您是否对项目进行了清理和重建?这应该确保 jar 正确匹配代码。这里的重点是 netbeans 使用 .class 文件,而外部运行使用 .jar。如果 jar 不同步,你会看到这个问题。
  • 嘿。是的,我尝试过(并在阅读您的答案后再次尝试)。遗憾的是它并没有改变任何东西!
  • 您在 netbeans 内外使用相同的 java 运行时吗?
  • 其实没有。 Netbeans 调用 1.7 ......当我双击 Jar 时,它调用的是 1.8。谢谢!
  • 如果有人对我在 1.8 上出现这些错误的原因感兴趣:[1] 标签旋转:在 1.7 上,当我使用 label.setStyle("-fx-rotate: -90") 然后修改另一个属性(例如颜色)旋转将保持不变。在 1.8 上,我必须在同一个语句中附加每个样式属性,并且总是提到 -90 旋转。 [2] 输入问题:我发现如果我右键单击 TextArea,我的动画网格会立即开始记录按键。可悲的是,我不知道我做了什么来解决这个问题,但它与焦点有关(因为事件侦听器位于根窗格上)。在 1.7 上还不错。

标签: java windows netbeans javafx


【解决方案1】:

一些可能的原因:

  1. .jar 文件不是最新的。

Netbeans 从 .class 文件运行,而在外部运行时使用 .jar 文件。

清理并重建,然后重试。

  1. 不同的类路径。

Netbeans 指定它希望应用在命令行上使用的所有库的类路径。你用的是什么命令行?有什么不同吗?

当 Netbeans 运行您的应用程序时,您可以在输出窗口中看到使用的命令行(您可能需要启用详细形式的输出 - 使用 Maven,您可以添加 --debug)。

  1. 如果您降低了权限,安全问题需要一些时间才能解决。

许多人授予 Netbeans 管理员权限(例如,允许它创建 jar 文件)。在命令行上可能不是这样。

尝试从具有管理员权限的命令提示符运行 .jar

  1. (受实际问题启发 - 谢谢@BlackRainbow) - Netbeans 项目将绑定到特定的 Java 版本。仅使用 Java ... -jar ... 从命令行运行时,您将获得可能不同的最新 Java 版本。

尝试从命令行运行它,选择特定的 Java 版本。 "C:\Program Files\Java\jdk7\jre\bin\java" ... 或类似的东西。

【讨论】:

  • 感谢您的回答!问题是它使用的是 Java 1.8 而不是 1.7...如果我使用 1.7 一切正常。有没有办法强制人们使用 1.7……如果他们没有,就停止执行?
  • @BlackRainbow 建议将 JRE 与您的应用程序一起打包(请参阅 javapackager 工具和 JavaFX Ant 任务和 JavaFX Maven 插件)或使用 Java Web Start 并在那里修复 JRE 版本(另请参阅部署Java JavaScript)。
  • @BlackRainbow 请注意,Oracle 的 Java SE 7 已结束生命周期,因此强烈建议您升级到 Java SE 8,除非您与 Oracle 签订了支持合同。但即便如此:对于 JavaFX 应用程序,推荐使用 Java SE 8。
猜你喜欢
  • 1970-01-01
  • 2016-02-03
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
相关资源
最近更新 更多