我在 IntelliJ14.14 中创建了一个 JavaFX 应用程序,它将使用 JavaFX虚拟键盘。我在mainApp类控制器中添加了以下属性:
if (Meteor.isClient) {
Meteor.startup(function ()
{
React.render(<TestComponent />, document.getElementById("render-target"));
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
TestComponent = React.createClass({
showAlert()
{
alert("On click!");
},
render()
{
return (
<div><button onClick={this.showAlert}>Click Me</button></div>
)
}
});
当我从IntelliJ运行应用程序时,一切正常。虚拟键盘完美运行。
但是当我从 Build - &gt;生成应用程序的 Jar 文件时构建工件...... - &gt;构建并执行它,键盘永远不会显示,因为没有设置VM选项。
这是我缺少的东西......?
提前致谢...
修改
我找到了一种方法来完成这项工作,使用此命令从 cmd 运行文件:
public static void main(String[] args) {
System.setProperty("com.sun.javafx.isEmbedded", "true");
System.setProperty("com.sun.javafx.touch", "true");
System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");
launch(args);
}
但是我想让它只是执行Jar文件......
修改
还有另一种方法可以实现我想要的......
在jar的同一个文件夹中创建一个文件 .bat 并输入:
java -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard="javafx" -Dcom.sun.javafx.touch=true -jar myApp.jar
因此,当执行 .bat 文件并启动jar文件时,系统属性会正确加载...
答案 0 :(得分:3)
public class MyApp {
public static void main(String[] args) {
if (args.length == 0) {
try {
// re-launch the app itselft with VM option passed
Runtime.getRuntime().exec(new String[] {"java", "-Dcom.sun.javafx.isEmbedded=true", "-Dcom.sun.javafx.virtualKeyboard=\"javafx\"", "-Dcom.sun.javafx.touch=true", "-jar", "myApp.jar"});
} catch (IOException ioe) {
ioe.printStackTrace();
}
System.exit(0);
}
// Run the main program with the VM option set
//...
//...
}
}