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

Rob*_*ini 18 java applet jar classloader java-web-start

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

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

在Google上搜索我发现了一些讨论据说添加参数codebase_lookupfalse,但这并没有解决问题.此页面codebase_lookup参数相关,表示Applet的默认行为是从JAR文件加载资源,然后从Applet代码库加载,在我的情况下,行为是相反的.

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

launch.html

<applet width="300" height="300">
        <param name="jnlp_href" value="launch.jnlp"/>
        <param name="codebase_lookup" value="false"/>
</applet>
Run Code Online (Sandbox Code Playgroud)


launch.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>
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?谢谢,

罗伯托.

Ant*_*n K 2

我最近在 log4j 通过 GET 查询丢失的资源时遇到了类似的问题。在您的情况下,也许基于 Web 的类路径仍然比捆绑的 jar 具有一些优先级?好吧,你可以尝试将所有罐子打包成一个。这当然会使构建变得复杂,但您可以手动尝试一次,看看问题是否消失。