2

我试图了解为什么在我的项目上启动 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,可以轻推一下!

提前谢谢了。

4

3 回答 3

1

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

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

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

于 2012-01-14T22:28:48.913 回答
1

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

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

感谢 Flextras 的帮助...

于 2012-01-15T15:08:08.850 回答
0

这是因为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 。

于 2012-01-17T13:47:38.060 回答