gpt4 book ai didi

gradle - Javafx应用程序的Gradle构建:由于缺少系统属性,虚拟键盘无法正常工作

转载 作者:行者123 更新时间:2023-12-03 06:14:01 27 4
gpt4 key购买 nike

我正在使用javafx应用程序,我们为此应用程序开发了gradle构建系统。可以使用以下gradle任务创建jar文件:

    task fatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'myProject'
}
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
with jar

}

到目前为止,该方法仍然有效-唯一的问题是我们要使用虚拟键盘(javafx),因此我们需要设置以下系统属性:
     systemProperty 'com.sun.javafx.isEmbedded', 'true' 
systemProperty 'com.sun.javafx.touch', 'true'
systemProperty 'com.sun.javafx.virtualKeyboard', 'javafx'

我可以在gradle构建中设置此属性,还是需要使用以下命令启动应用程序

java -Dcom.sun.javafx.isEmbedded = true -Dcom.sun.javafx.touch = true -Dcom.sun.javafx.virtualKeyboard = javafx -jar myProject.jar

最好的祝福

__________________________________-

解决方案(非常感谢Frederic Henri :-))是编写一个包装类,例如
public class AppWrapper 
{
public static void main(String[] args) throws Exception
{
Class<?> app = Class.forName("myProject");
Method main = app.getDeclaredMethod("main", String[].class);
System.setProperty("com.sun.javafx.isEmbedded", "true");
System.setProperty("com.sun.javafx.touch", "true");
System.setProperty("com.sun.javafx.virtualKeyboard", "javafx");
Object[] arguments = new Object[]{args};
main.invoke(null, arguments);
}
}

最佳答案

我不认为可以在构建阶段完成这项工作(我很高兴会犯错,但是会看到另一个答案)-

Java: Modify System properties via runtime似乎还有另一个答案,它说要在最终的main方法周围编写包装器,这样您就可以传递所需的属性,但不确定它的性能如何。

关于gradle - Javafx应用程序的Gradle构建:由于缺少系统属性,虚拟键盘无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com