我正在尝试将我的JavaFX应用程序编译成WAR文件,以便使用Maven在Jetty服务器上进行部署。正如我所看到的,问题在于我的webapp的index.html中的javascript:
<script>
javafx(
{
draggable: true,
width: 600,
height: 290,
code: "my.app.package.MyApp",
name: "MyApp",
id: "app"
}
);
</script>
当然,JavaScript会抛出一个错误,因为它缺少'archive'参数,我应该把我正在加载它的jar文件的名称。但那就是问题,没有罐子。这是与'WEB-INF / classes /'中的.class文件的战争,而不是在jar中。似乎没有太多关于如何做到这一点的文档。
我担心这是不受支持的行为。一个恼人的选择是将构建类型更改为“jar”,构建它,将构建类型更改回“war”,构建它,并且每次手动将jar放入战争中。我想如果我能找到一种自动化的方法,那就没关系,但是我不知道如何在构建过程中进行所有 INCEPTION ,或者如果这是一个好主意。< / p>
感谢您的任何想法!
答案 0 :(得分:0)
在WEB-INF / classes中部署的类是Web应用程序的一部分,它们在服务器上运行。您的JavaFX类适用于在浏览器或桌面上运行的完全独立的应用程序。
您应该将它们中的两个保存在单独的项目中,然后使用Maven在WAR项目的包阶段之前将打包的JavaFX jar添加到WAR中。
答案 1 :(得分:0)
我遇到的解决方案是使用ant任务构建JavaFX应用程序(因为它无论如何都是NetBeans项目),并且通过对maven-war-plugin使用此配置包括战争中生成的jar:
<configuration>
<webResources>
<!-- Include the jar build inside the war -->
<resource>
<directory>dist</directory>
<includes>
<include>MyJavaFXApp.jar</include>
</includes>
</resource>
</webResources>
</configuration>
对于那些寻找纯粹的maven解决方案而不是ant任务的人,我也能够使用maven-jar-plugin来专门构建一个jar(项目包装类型仍然是'war'),然后我使用上面包含的方法。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>