gpt4 book ai didi

java - 由 Java Web Start 提供的 Applet,在查看 JAR 文件之前向 WEB 服务器请求资源

转载 作者:太空狗 更新时间:2023-10-29 22:35:45 28 4
gpt4 key购买 nike

我是新来的,我为我的糟糕英语道歉。

我对由 Java Web Start 技术提供服务的 Applet 类有一个小问题。我有一些 Web Start 正确下载的依赖于平台的 JAR 文件,但是当我通过 ClassLoader 对象的 getResourceAsStream(String fileName) 方法获取内容时,首先发出 GET 请求fileName 到 WEB 服务器,在收到 404 Not Found 响应后,资源从 JAR 文件正确加载。问题是我在 JAR 中有很多文件,所以我在 WEB 服务器上有很多不必要的负载,因此我必须等待很长时间才能使用 Applet。

在 Google 上搜索我发现了一些讨论,其中据说要添加值为 false 的参数 codebase_lookup,但这并没有解决问题。 This page ,关于 codebase_lookup 参数,表示 Applet 的默认行为是从 JAR 文件加载资源,然后从 Applet 代码库加载资源,在我的例子中,行为是相反的。

我还在 .jnlp 文件中为每个 JAR 资源添加了 eager="true" 属性,但行为始终相同。 Applet是用NetBeans开发和构建的,生成的html和jnlp文件如下。

启动.html

<applet width="300" height="300">
<param name="jnlp_href" value="launch.jnlp"/>
<param name="codebase_lookup" value="false"/>
</applet>


启动.jnlp

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://192.168.23.4/contact" href="launch.jnlp" spec="1.0+">
<information>
<title>ContactNR</title>
<vendor>Roberto Santini</vendor>
<homepage href=""/>
<description>ContactNR</description>
<description kind="short">ContactNR</description>
</information>
<resources>
<j2se version="1.5+"/>
<jar eager="true" href="ContactNR.jar" main="true"/>
<jar eager="true" href="lib/VDK.jar"/>
<security>
<all-permissions/>
</security>
</resources>
<resources arch="amd64" os="Linux">
<jar eager="true" href="lib/liblinux64.jar"/>
</resources>
<resources arch="x86_64" os="Linux">
<jar eager="true" href="lib/liblinux64.jar"/>
</resources>
<resources arch="x86" os="Linux">
<jar eager="true" href="lib/liblinux.jar"/>
</resources>
<resources arch="i386" os="Linux">
<jar eager="true" href="lib/liblinux.jar"/>
</resources>
<resources os="Windows">
<jar eager="true" href="lib/libwin.jar"/>
</resources>
<resources os="MacOs">
<jar eager="true" href="lib/libmac.jar"/>
</resources>
<applet-desc height="300" main-class="com.netresults.voip.ContactNR" name="ContactNR" width="300">
<param name="codebase_lookup" value="false"/>
</applet-desc>
</jnlp>

有人可以帮助我吗?非常感谢,

罗伯托。

最佳答案

我通过向 JAR 文件添加索引解决了这个问题。构建 jar 后,运行命令:

JAR -i <path/to/jar-file>

它必须作为与实际 JAR-ing 分开的单独步骤运行。

解释:当启动进程在 META-INF 中遇到 INDEX.LIST 时,它会信任它,并且不会去寻找服务器上的文件。

关于java - 由 Java Web Start 提供的 Applet,在查看 JAR 文件之前向 WEB 服务器请求资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340969/

28 4 0
文章推荐: java - Visual Studio 代码,Java 扩展,如何将 JAR 添加到类路径?
文章推荐: c# - 为什么匿名类型的 IEnumerable 不在 ToList() 上返回 List