【问题标题】:Need to understand WAR descriptor and structure - Flex project within WAR需要了解 WAR 描述符和结构 - WAR 中的 Flex 项目
【发布时间】:2012-02-10 13:11:38
【问题描述】:

我试图了解为什么在我的项目上启动 mvm jetty:run 后无法从 URL 启动 SWF。

项目构建成功,在maven目标目录下生成了一个Falcon-WAR-0.0.1-SNAPSHOT.war。此文件中包含以下文件 - 包括从 Flex 项目编译的 .swf 文件。

我的 web.xml 很简单,包含以下代码:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">

    <display-name>Falcon Flights</display-name>

    <welcome-file-list>
        <welcome-file>Falcon-Flights.swf</welcome-file>
    </welcome-file-list>

</web-app>

我的应用程序的上下文根与 WAR 的工件 ID 相同,因此是 FALCON-WAR。

当我启动 mvn jetty:run 时,我会在控制台上打印以下内容:

但是,当我尝试在浏览器上导航到 http://localhost:8080/FALCON-WAR 时,当我希望从 web.xml 定义中启动 .swf 文件时,我得到以下信息。

谁能帮我弄清楚我做错了什么?这可以让我更多地了解 Web 容器如何解释 .war 结构 - 但这是我在 Web 应用程序开发方面的第一次 bash,可以轻推!

非常感谢。

【问题讨论】:

    标签: java apache-flex maven maven-2 maven-jetty-plugin


    【解决方案1】:

    这是因为 jetty:run 来自您的 Maven 项目的来源。尽管您已经显示了 target 的目录列表,但您的 SWF 是如何到达那里的并不明显 - 我猜它是您的 WAR 模块的依赖项,而不是保存在 src/main/webapp 或类似的.

    jetty:run-exploded 首先构建目标目录,然后从那里运行应用程序。因此,这会更好。

    另一个选项是jetty:run-war,它构建 WAR 并从中运行应用程序。但是,这将比 jetty:run-exploded 慢,后者需要少一个构建步骤。

    更多详情请见http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin

    【讨论】:

      【解决方案2】:

      最终我使用了 mvn jetty:run=exploded 目标。此目标指向 WAR 文件的构建目录(问题文本中图像中的第一个快照),然后上下文路径有效。

      仍然不确定为什么 jetty:run 无法正常工作 - 但我已经启动并运行了。

      感谢 Flextras 的帮助...

      【讨论】:

      • +1 请务必将此标记为您问题的解决方案。它将帮助将来遇到这个问题的人。
      【解决方案3】:

      我对 Jetty 了解不多;但是您在“输出”中看到的内容看起来像是一个 Web 服务器目录列表。目录中还有其他内容吗?您确定 Web 根目录指向您在第一个快照中显示的目录吗? [如果是这样,meta-inf 目录和 falcon-flights 文件在哪里?如果您将 URL 更改为:

      http://localhost:8080/FALCON-WAR/Falcon-Flights.swf

      这会给您一个 404 错误,还是正确加载?

      【讨论】:

      • 嗨 - 是的,这确实给了我一个 404 错误。但是,如果您查看上面的控制台快照,它会将上下文路径声明为 /FALCON-WAR。所以我假设localhost:8080/FALCON-WAR 会将我带到应用程序的目录。
      • 此目录中没有列出任何其他内容,只有 WEB-INF 文件夹。当我点击这个链接时 - 它也是空的。
      • @totalcruise 听起来网络服务器的路径配置不正确;并且指向错误的东西。我只是不知道如何告诉你修复它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 2012-04-04
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多