# 部署 Java Web Start 应用程序

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/webstart/deploying.html](https://docs.oracle.com/javase/tutorial/deployment/webstart/deploying.html)

要部署 Java Web Start 应用程序，首先编译源代码，将其打包为 JAR 文件，然后对 JAR 文件进行签名。

Java Web Start 应用程序使用 Java 网络启动协议（JNLP）启动。因此，您必须创建一个 JNLP 文件来部署您的应用程序。

Deployment Toolkit 脚本包含有用的 JavaScript 函数，可用于在 Web 页面上部署 Java Web Start 应用程序。

如果您不熟悉这些部署技术，请在继续之前查看[深入部署](../deploymentInDepth/index.html)课程。

以下是打包和部署应用程序的一些分步说明。 Dynamic Tree Demo 应用程序用于说明 Java Web Start 应用程序的部署。您可能希望设置构建脚本以执行以下某些步骤。

单击以下“启动”按钮以启动“动态树演示”应用程序。

<noscript>A browser with JavaScript enabled is required for this page to operate properly.</noscript>

* * *

**Note:**  If you don't see the example running, you might need to enable the JavaScript interpreter in your browser so that the Deployment Toolkit script can function properly.

* * *

1.  Compile your application's Java code and make sure that all class files and resources such as images are in a separate directory.

    在 Dynamic Tree Demo 应用程序中，已编译的类放在`build/classes/webstartComponentArch`目录中。

2.  Create a text file that contains any JAR file manifest attributes that your applet needs.

    对于 DynamicTree 演示小程序，在`build/classes`目录中创建名为`mymanifest.txt`的文件，并添加`Permissions`，`Codebase`和`Application-Name`属性。 applet 不需要访问用户的系统资源，因此使用`sandbox`获取权限。使用您将从中加载示例代码库的域，例如`myserver.com`。将以下属性添加到`mymanifest.txt`文件。

    ```
    Permissions: sandbox
    Codebase: myserver.com
    Application-Name: Dynamic Tree Demo

    ```

    其他清单属性可用于限制 applet 仅使用受信任的代码，并为需要在特权 Java 代码和沙箱 Java 代码之间进行调用的 applet 提供安全性，或者具有调用 applet 的 JavaScript 代码。请参阅[增强安全性与清单属性](../jar/secman.html)课程，以了解有关可用清单属性的更多信息。

3.  Create a JAR file containing your application's class files and resources. Include the manifest attributes in the `mymanifest.txt` file that you created in the previous step.

    例如，以下命令创建一个 JAR 文件，其中包含`build/classes/webstartComponentArch`目录中的类文件和`build/classes`目录中的清单文件。

    ```
    % cd build/classes
    % jar cvfm  DynamicTreeDemo.jar  mymanifest.txt webstartComponentArch

    ```

    有关创建和使用 JAR 文件的详细信息，请参阅 JAR 文件课程中的[打包程序。](../jar/index.html)

4.  Sign the JAR file for your applet and time stamp the signature. Use a valid, current code signing certificate issued by a trusted certificate authority to provide your users with assurance that it is safe to run the applet.

    有关详细信息，请参阅[签名 JAR 文件](../jar/signing.html)课程。

    如果要使用已签名的 JNLP 文件进行安全性，请按照下一步中的说明创建 JNLP 文件，并在签名 JAR 文件之前将其包含在 JAR 文件中。有关信息，请参阅 Java 平台标准版部署指南中的[签名 JNLP 文件](https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/signed_jnlp.html)。

5.  Create a JNLP file that describes how your application should be launched.

    以下是用于启动 Dynamic Tree Demo 应用程序的 JNLP 文件。此应用程序不要求权限，因此它在安全沙箱中运行。 [``dynamictree_webstart.jnlp`` ](examples/webstart_ComponentArch_DynamicTreeDemo/src/dynamictree_webstart.jnlp)的来源如下：

    ```

    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;jnlp spec="1.0+" codebase=
    "https://docs.oracle.com/javase/tutorialJWS/samples/deployment/webstart_ComponentArch_DynamicTreeDemo" 
        href="dynamictree_webstart.jnlp"&gt;
        &lt;information&gt;
            &lt;title&gt;Dynamic Tree Demo&lt;/title&gt;
            &lt;vendor&gt;Dynamic Team&lt;/vendor&gt;
        &lt;/information&gt;
        &lt;resources&gt;
            &lt;!-- Application Resources --&gt;
            &lt;j2se version="1.7+"
                  href="http://java.sun.com/products/autodl/j2se"/&gt;
            &lt;jar href="DynamicTreeDemo.jar"
                main="true" /&gt;

        &lt;/resources&gt;
        &lt;application-desc
             name="Dynamic Tree Demo Application"
             main-class=
               "webstartComponentArch.DynamicTreeApplication"
             width="300"
             height="300"&gt;
         &lt;/application-desc&gt;
         &lt;update check="background"/&gt;
    &lt;/jnlp&gt;                                   

    ```

    [Structure of the JNLP File](../deploymentInDepth/jnlpFileSyntax.html) describes the JNLP file syntax and options.

    * * *

    **Note:** The `codebase` and `href` attributes are optional when deploying Java Web Start applications that will run on at least the Java SE 6 update 18 release or later. You must specify the `codebase` and `href` attributes when deploying Java Web Start applications that will run with previous releases of the Java Runtime Environment software.

    * * *

6.  Create the HTML page from which your application will be launched. Invoke Deployment Toolkit functions to deploy the Java Web Start application.

    在该示例中，动态树演示应用程序部署在 [``JavaWebStartAppPage.html``](examples/dist/webstart_ComponentArch_DynamicTreeDemo/JavaWebStartAppPage.html)中。

    ```
    &lt;body&gt;
        &lt;!-- ... --&gt;
        &lt;script src=
          "https://www.java.com/js/deployJava.js"&gt;&lt;/script&gt;
        &lt;script&gt;
            // using JavaScript to get location of JNLP
            // file relative to HTML page
            var dir = location.href.substring(0,
                location.href.lastIndexOf('/')+1);
            var url = dir + "dynamictree_webstart.jnlp";
            deployJava.createWebStartLaunchButton(url, '1.7.0');
        &lt;/script&gt;
        &lt;!-- ... --&gt;
    &lt;/body&gt;

    ```

    如果您不确定最终用户是否在其浏览器中启用了 JavaScript 解释器，则可以通过创建指向 JNLP 文件的链接直接部署 Java Web Start 应用程序，如下所示：

    ```
    &lt;a href="/absolute path to JNLP file/dynamictree_webstart.jnlp"&gt;Launch Notepad Application&lt;/a&gt;

    ```

    如果使用直接链接部署 Java Web Start 应用程序，则无法利用 Deployment Toolkit 功能提供的其他检查。有关详细信息，请参阅“深入部署”课程中的[部署 Java Web Start 应用程序](../deploymentInDepth/createWebStartLaunchButtonFunction.html)。

7.  Place the application's JAR file, JNLP file, and HTML page in the appropriate folders.

    对于此示例，将`DynamicTreeDemo.jar`，`dynamictree_webstart.jnlp`和`JavaWebStartAppPage.html`放在本地计算机或 Web 服务器上的同一目录中。 Web 服务器是首选。要从本地计算机运行，必须将应用程序添加到例外站点列表，该列表由 Java 控制面板的“安全”选项卡管理。

8.  在浏览器中打开应用程序的 HTML 页面以查看应用程序。同意在出现提示时运行该应用程序。检查 Java 控制台日志以获取错误和调试消息。

[下载 _ 动态树演示 _ 示例的源代码](examplesIndex.html#DynamicTreeDemo)以进一步试验。