# JNLP 文件的结构

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

本主题描述富 Internet 应用程序（RIA）的 Java 网络启动协议（JNLP）文件的语法。

以下代码段显示了 Java Web Start 应用程序的示例 JNLP 文件：

```
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="" href="">
    <information>
        <title>Dynamic Tree Demo</title>
        <vendor>Dynamic Team</vendor>
        <icon href="sometree-icon.jpg"/>
        <offline-allowed/>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href=
           "http://java.sun.com/products/autodl/j2se"/>
        <jar href="DynamicTreeDemo.jar"
            main="true" />

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

```

下表描述了 JNLP 文件中常用的元素和属性。单击父链接以查看元素的父级。

* * *

**Note:** This table does not include all possible contents of the JNLP file. For more information, see the [Java Network Launching Protocol and API Specification Change Log](http://www.oracle.com/technetwork/java/javase/jnlp-spec-log-139509.html).

* * *

<caption>**Commonly Used Elements and Attributes in a JNLP file**</caption> <colgroup><col width="126"> <col width="140"> <col width="646"> <col width="73"> <col width="66"></colgroup>
| 

元件

 | 

属性

 | 

描述

 | 

以来

 | 

需要

 |
| --- | --- | --- | --- | --- |
| jnlp |  | JNLP 文件的最顶层 xml 元素。 | 1.0
 | 是 |
|  | 规范 | 属性的值可以是 1.0,1.5 或 6.0，也可以使用 1.0+等通配符。它表示此 JNLP 文件可以使用的 JNLP 规范的最低版本。 | 1.0 |  |
|  | 代码库 | JNLP 文件中`href`属性中指定的所有相对 URL 的基本位置。 | 1.0 |  |
|  | HREF | JNLP 文件本身的 URL。 | 1.0 |  |
|  | 版 | 正在推出的 RIA 版本，以及 JNLP 文件本身的版本。 | 1.0 |  |
| 信息 &lt;sup&gt;[父](#jnlp)&lt;/sup&gt; |  | 包含描述 RIA 及其来源的其他元素。 | 1.0 | 是 |
|  | 口 | 应考虑此信息元素的操作系统。 | 1.5.0

 |  |
|  | 拱 | 应考虑此信息元素的体系结构。 | 1.5.0 |  |
|  | 平台 | 应考虑此信息元素的平台。 | 1.5.0 |  |
|  | 现场 | 应考虑此信息元素的语言环境。 | 1.5.0 |  |
| 标题 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | RIA 的标题。 | 1.0 | 是 |
| 供应商 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | RIA 的提供者。 | 1.0 | 是 |
| 主页 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | RIA 的主页。 | 1.0 |  |
|  | HREF | 指向可以找到有关此 RIA 的更多信息的 URL。 | 1.0 | 是 |
| 描述 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 一篇描述 RIA 的简短声明。 | 1.0 |  |
|  | 类 | 关于描述类型的指标。合法值是单行，短行和工具提示。 | 1.0 |  |
| icon &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 可用于向用户标识 RIA 的图标。 | 1.0 |  |
|  | HREF | 指向图标文件的 URL。可以采用以下格式之一：gif，jpg，png，ico。 | 1.0 | 是 |
|  | 类 | 表示建议使用图标，可以是：默认，选中，禁用，翻转，启动或快捷方式。 | 1.0 |  |
|  | 宽度 | 可用于指示图像的分辨率。 | 1.0 |  |
|  | 高度 | 可用于指示图像的分辨率。 | 1.0 |  |
|  | 深度 | 可用于指示图像的分辨率。 | 1.0 |  |
| 离线允许 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 表示当客户端系统与网络断开连接时，此 RIA 可以运行。 | 1.0 |  |
| 快捷方式 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 可用于指示 RIA 对桌面集成的偏好。 | 1.5.0 |  |
|  | 线上 | 可用于描述 RIA 创建在线或离线运行快捷方式的首选项。 | 1.5.0 |  |
| 桌面 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 可用于指示 RIA 在用户桌面上放置快捷方式的偏好。 | 1.5.0 |  |
| 菜单 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 可用于指示 RIA 将菜单项放在用户的开始菜单中的首选项。 | 1.5.0 |  |
|  | 子菜单 | 可用于指示 RIA 对放置菜单项的位置的偏好。 | 1.5.0 |  |
| 关联 &lt;sup&gt;[亲本](#information)&lt;/sup&gt; |  | 可用于向 JNLP 客户端提示 RIA 希望在操作系统中注册为某些扩展和某个 mime 类型的主要处理程序。如果包含此元素，则还必须包含 offline-allowed 元素，或者必须为 jnlp 元素设置 href 属性。 | 1.5.0 |  |
|  | 扩展 | RIA 请求注册处理的文件扩展名列表（以空格分隔）。 | 1.5.0 |  |
|  | MIME 类型 | RIA 要求它注册处理的 mime 类型。 | 1.5.0 |  |
| 相关内容 &lt;sup&gt;[父](#information)&lt;/sup&gt; |  | 另外一条可与 RIA 集成的相关内容。 | 1.5.0 |  |
|  | HREF | 指向相关内容的 URL。 | 1.5.0 | 是 |
| 更新 &lt;sup&gt;[父](#jnlp)&lt;/sup&gt; |  | JNLP 客户端应如何处理 RIA 更新的首选项。 | 1.6.0 |  |
|  | 校验 | JNLP 客户端何时应检查更新的首选项。值可以是 always，timeout 或 background .. | 1.6.0 |  |
|  | 政策 | 在 RIA 启动之前，当新版本可用时，优先考虑 JNLP 客户端应如何处理 RIA 更新。值可以是 always，prompt-update 或 prompt-run。 | 1.6.0 |  |
|  |  |  | 1.0 |  |
| 安全 &lt;sup&gt;[父](#jnlp)&lt;/sup&gt; |  | 可用于请求增强的权限。如果未包含此元素，则应用程序将在安全沙箱中运行。 | 1.0 |  |
| 所有权限 &lt;sup&gt;[父](#security)&lt;/sup&gt; |  | 请求以所有权限运行 RIA。 | 1.0 |  |
| j2ee-application-client-permissions &lt;sup&gt;[parent](#security)&lt;/sup&gt; |  | 请求使用符合 J2EE 应用程序客户端环境的安全规范的权限集运行 RIA。 | 1.0 |  |
| 资源 &lt;sup&gt;[父](#jnlp)&lt;/sup&gt; |  | 描述 RIA 所需的所有资源。 | 1.0 | 是 |
|  | 口 | 应考虑资源元素的操作系统。 | 1.0 |  |
|  | 拱 | 应考虑资源元素的体系结构。 | 1.0 |  |
|  | 现场 | 应考虑资源元素的语言环境。 |  |  |
| java 或 j2se &lt;sup&gt;[父](#resources)&lt;/sup&gt; |  | 用于运行 RIA 的 Java 软件版本。 | 1.6.0（java）
 |  |
|  | 版 | 要使用的版本范围的有序列表。 | 1.0 | 是 |
|  | HREF | URL 表示此 Java 版本软件的供应商，以及可从中下载的位置。 | 1.0 |  |
|  | Java 的 VM-ARGS | 一组额外的标准和非标准虚拟机参数，RIA 希望 JNLP 客户端在启动 JRE 软件时使用这些参数。 | 1.0 |  |
|  | 初始堆尺寸 | Java 堆的初始大小。 | 1.0 |  |
|  | 最大堆大小 | Java 堆的最大大小。 | 1.0 |  |
| jar &lt;sup&gt;[parent](#resources)&lt;/sup&gt; |  | 一个 JAR 文件，它是 RIA 类路径的一部分。 | 1.0 | 是 |
|  | HREF | JAR 文件的 URL。 | 1.0 | 是 |
|  | 版 | 请求的 JAR 文件版本。需要使用基于版本的下载协议 | 1.0 |  |
|  | 主要 | 指示此 JAR 文件是否包含包含 RIA 的`main`方法的类。 | 1.0 |  |
|  | 下载 | 表示可以懒惰地或在需要时下载此 JAR 文件。 | 1.0 |  |
|  | 尺寸 | JAR 文件的可下载大小（以字节为单位）。 | 1.0 |  |
|  | 部分 | 可用于将资源组合在一起，以便同时下载它们。 | 1.0 |  |
| nativelib &lt;sup&gt;[亲本](#resources)&lt;/sup&gt; |  | 一个 JAR 文件，在其根目录中包含本机库。 | 1.0 |  |
|  | HREF | JAR 文件的 URL。 | 1.0 | 是 |
|  | 版 | 请求的 JAR 文件版本。需要使用基于版本的下载协议 | 1.0 |  |
|  | 下载 | 可以用来表示这个 JAR 文件可以懒得下载。 | 1.0 |  |
|  | 尺寸 | JAR 文件的可下载大小（以字节为单位）。 | 1.0 |  |
|  | 部分 | 可用于将资源组合在一起，以便同时下载它们。 | 1.0 |  |
| 延伸 &lt;sup&gt;[亲本](#resources)&lt;/sup&gt; |  | 指向要与此 RIA 一起使用的其他 component-desc 或 installer-desc 的指针。 | 1.0 |  |
|  | HREF | 附加扩展名 JNLP 文件的 URL。 | 1.0 | 是 |
|  | 版 | 附加扩展 JNLP 文件的版本。 | 1.0 |  |
|  | 名称 | 附加扩展名 JNLP 文件的名称 | 1.0 |  |
| ext-download &lt;sup&gt;[parent](#extension)&lt;/sup&gt; |  | 可以在扩展元素中用于表示组件扩展中包含的部分。 | 1.0 |  |
|  | EXT-部分 | 可以预期在扩展中找到的部件的名称。 | 1.0 | 是 |
|  | 下载 | 可用于表示此扩展可以热切或懒散地下载。 | 1.0 |  |
|  | 部分 | 表示此 JNLP 文件中包含扩展名的部件的名称。 | 1.0 |  |
| 包 &lt;sup&gt;[父](#resources)&lt;/sup&gt; |  | 可用于向 JNLP 客户端指示哪些包在哪些 JAR 文件中实现。 | 1.0 |  |
|  | 名称 | 包名称包含在给定部件的 JAR 文件中。 | 1.0 | 是 |
|  | 部分 | 包含包含给定包名称的 JAR 文件的部件名称。 | 1.0 | 是 |
|  | 递归 | 可用于指示可以在给定部件中找到以给定名称开头的所有包名称。 | 1.0 |  |
| 属性 &lt;sup&gt;[父](#resources)&lt;/sup&gt; |  | 定义可通过`System.getProperty`和`System.getProperties`方法使用的系统属性。 | 1.0 |  |
|  | 名称 | 系统属性的名称。 | 1.0 | 是 |
|  | 值 | 系统属性的值。 | 1.0 | 是 |
|  |  | 注意：JNLP 文件必须包含以下内容之一：application-desc，applet-desc，component-desc 或 installer-desc。 | 1.0 | 是 |
| application-desc &lt;sup&gt;[parent](#jnlp)&lt;/sup&gt; |  | 表示这是应用程序的 JNLP 文件。 | 1.0 |  |
|  | 主级 | 包含应用程序的`public static void main(String[])`方法的类的名称。 | 1.0 | 是 |
| 参数 &lt;sup&gt;[父](#applicationdesc)&lt;/sup&gt; |  | 每个参数包含（按顺序）要传递给`main`方法的附加参数。 | 1.0 |  |
| applet-desc &lt;sup&gt;[父](#jnlp)&lt;/sup&gt; |  | 表示这是 applet 的 JNLP 文件。 | 1.0 |  |
|  | 主级 | 主 applet 类的名称。 | 1.0 | 是 |
|  | 文档基 | applet 的文档库为 URL。 | 1.0 |  |
|  | 名称 | 小程序的名称。 | 1.0 | 是 |
|  | 宽度 | applet 的宽度（以像素为单位）。 | 1.0 | 是 |
|  | 高度 | 小程序的高度（以像素为单位）。 | 1.0 | 是 |
| param &lt;sup&gt;[父](#appletdesc)&lt;/sup&gt; |  | 一组可以传递给 applet 的参数。 | 1.0 |  |
|  | 名称 | 此参数的名称。 | 1.0 | 是 |
|  | 值 | 此参数的值。 | 1.0 | 是 |
| component-desc &lt;sup&gt;[parent](#jnlp)&lt;/sup&gt; |  | 表示这是组件扩展的 JNLP 文件。 | 1.0 |  |
| installer-desc &lt;sup&gt;[parent](#jnlp)&lt;/sup&gt; |  | 表示这是已安装扩展的 JNLP 文件。 | 1.0 |  |
|  | 主级 | 包含安装程序的`public static void main(String[])`方法的类的名称。 | 1.0 | 是 |

## 编码 JNLP 文件

Java Web Start 软件支持以 Java 平台支持的任何字符编码对 JNLP 文件进行编码。有关 Java 平台中字符编码的更多信息，请参阅[支持的编码指南](https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html)。要对 JNLP 文件进行编码，请在该文件的 XML 序言中指定编码。例如，以下行表示 JNLP 文件以 UTF-16 编码。

```
<?xml version="1.0" encoding="utf-16"?>

```

* * *

**Note:** The XML prolog itself must be UTF-8-encoded.

* * *