【问题标题】:Jetty and/or Servlet-api in JavaFX breaks deploymentJavaFX 中的 Jetty 和/或 Servlet-api 中断部署
【发布时间】:2013-01-15 15:11:29
【问题描述】:

我尝试将 Jetty 嵌入到我的 JavaFX 2.2 小程序(在浏览器中运行)。

我的问题是,要托管 servlet,除了 jetty-server.jar、jetty-servlet.jar 和 jetty-util.jar 之外,我还需要包含 servlet-api-3.0.jar(用于 javax.servlet 命名空间)。

如果我包含 servlet-api.jar,我的项目会编译,但是当我在浏览器中运行它时,部署失败并显示“JavaFX 应用程序由于系统配置而无法启动(显示错误详细信息)。请参阅 java.util.jar。 com/javafx 以获取故障排除信息。”错误信息。

如果我删除 servlet-api.jar(并删除相关源),它会再次部署。

对于 JavaFX 项目,Java 平台设置为“默认 JavaFX 平台”,最好保持这种方式以减少所需的最小占用空间。

我不是 java(fx) 专家(我来自 .NET 世界),因此我将不胜感激!

【问题讨论】:

  • 错误详情是什么?
  • 我不知道如何获取它们,因为如果我单击“显示错误详细信息”链接,则会出现 JVM 控制台,其中不包含任何内容。我不知道如何正确设置它以显示错误:/
  • 作为“普通”应用程序(而不是 Applet)运行时它是否工作?
  • 是的,它确实像普通应用程序一样运行 :( 如果我将它切换回“在浏览器中运行”,它会再次失败。
  • 嗯,您能否检查生成的 JNLP 文件是否包含所有必需的 JAR 以及 JAR 的位置是否正确?

标签: jetty javafx-2 javafx embedded-jetty


【解决方案1】:

您在签署 JAR 时遇到问题。我对为 JavaFX 签名 JAR 不是很熟悉,但这里是文档:

http://docs.oracle.com/javafx/2/deployment/packaging.htm#BABJGFBH

http://docs.oracle.com/javafx/2/deployment/javafx_ant_task_reference001.htm#CIAFJGAB

【讨论】:

    【解决方案2】:

    servlet-api-3.0.jar 是所谓的 provided 依赖项。

    它不需要包含在您的 war 文件中,因为 Web 应用程序容器(在本例中为 Jetty)为您提供了它。在您的构建工具中,只需将 servlet-api.jar 排除在您的 war 文件中即可。

    注意:jetty-server-9.0.0.M5.jar 也是一个提供的依赖,具有相同的规则。

    【讨论】:

    • 我猜你误解了我的意思:我没有在 Jetty 中托管我的 JavaFX 应用程序!我在静态 HTML 中托管我的 JavaFX 应用程序,并且我想在 JavaFX 应用程序内部/从 JavaFX 应用程序中使用 Jetty 在 JavaFX 中打开一个 HTTP-listener/servlet。还是我误会你了? :)
    猜你喜欢
    • 2011-06-29
    • 2018-12-19
    • 1970-01-01
    • 2012-05-31
    • 2017-02-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多