首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Web Start提供的Applet,在查看JAR文件之前向WEB服务器请求的资源

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

Stack Overflow用户
提问于 2010-02-26 18:43:49
回答 2查看 2.5K关注 0票数 18

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

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

在谷歌上搜索,我找到了一些讨论,据说添加了值为false的参数codebase_lookup,但这并没有解决问题。与codebase_lookup参数相关的This page表示,小程序的默认行为是从JAR文件加载资源,然后从小程序代码库加载资源,在我的例子中,情况正好相反。

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

launch.html

代码语言:javascript
复制
<applet width="300" height="300">
        <param name="jnlp_href" value="launch.jnlp"/>
        <param name="codebase_lookup" value="false"/>
</applet>

launch.jnlp

代码语言:javascript
复制
<?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>

有人能帮我吗?非常感谢,

罗伯托。

EN

回答 2

Stack Overflow用户

发布于 2013-11-25 17:41:09

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

代码语言:javascript
复制
JAR -i <path/to/jar-file>

它必须作为独立于实际JAR的步骤运行。

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

票数 3
EN

Stack Overflow用户

发布于 2011-03-05 19:13:29

我最近遇到了一个类似的问题,那就是log4j通过GET查询丢失的资源。也许在您的案例中,基于web的类路径仍然比捆绑的jars具有更高的优先级?嗯,你可以试着把所有的罐子都装进一个罐子里。这当然会使构建变得复杂,但您可以手动尝试一次,看看问题是否消失了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2340969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档