【问题标题】:Class not found Exception when launching Applet using JNLP使用 JNLP 启动 Applet 时找不到类
【发布时间】:2023-04-01 22:19:01
【问题描述】:

我在尝试使用 JNLP 启动 jar 文件时遇到了问题。我们之前在没有任何问题的情况下启动了没有 JNLP 的小程序。我们要启动三个不同的 jar,它们与 jnlp 文件一起保存在同一目录中。所有 jars 都已下载,但当我们尝试从外部 jars 之一(即不是主要的 jars)加载类时,我们会看到 classNotFoundError。应用程序一直运行,直到发生这种情况,所以我们的主 jar 似乎正在执行。 JNLP 文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" href="/jars/file.jnlp">
<information>
    <title>Client</title>
    <vendor>My Vendor</vendor>
    <description>Description</description>
    <description kind="short">Desc</description>
    <offline-allowed />
</information>
<security>
    <all-permissions />
</security>

<resources>
    <j2se version="1.6+" />
    <jar href="mainJar.jar" main="true" download="eager"/>
    <jar href="extJar1.jar" main="false" download="eager"/>
    <jar href="extJar2.jar" main="false" download="eager" />
</resources>
<applet-desc 
    name="MyApp" 
    main-class="path-to-main-class"
    width="1"
    height="1">
</applet-desc>
</jnlp>

然后从 HTML 文件启动小程序,如下所示:

<applet
    code="com.mycompany.net.MyMainClass" 
    name="MyApp" 
    archive="/jars/extJar1.jar, /jars/extJar2.jar, /jars/mainJar.jar" 
    id="myId" 
    width="1" 
    height="1" 
    mayscript
    alt="The java plugin must be installed.">
            <param name="jnlp_href" value="/jars/file.jnlp"/>
    Java 1.5 or higher required.  
</applet>

我已经用 Janela 检查了 jnlp,这没有给我任何错误。它可以在没有 jnlp 文件的情况下从 Eclipse 运行小程序。它还可以从 javaws 打开 jnlp 文件,指定文件或文件的 url。这让我认为这是不正确的html。然而,据我所知。我尝试使用以下 javascript 启动,结果相同:

<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var attributes = {
        id:'myId', 
  code:'com.mycompany.net.MyMainClass', 
  width:1, 
  height:1, 
  name:"MyApp"
};
    var parameters = {
        jnlp_href:"/jars/file.jnlp",
        archive:"/jars/extJar1.jar, /jars/extJar2.jar, /jars/mainJar.jar",
    };
deployJava.runApplet(attributes, parameters, '1.6');

【问题讨论】:

  • 我看不出 JNLP(使用 JaNeLA 的好方法)或 applet/JS 元素没有任何问题。您在哪些浏览器中进行测试?
  • Chrome 和 Firefox。我想我找到了我的根本原因。下载完所有 jar 包后,服务器会收到一个新请求,请求稍后找不到的类。但是为什么它在我的 jar 文件夹中而不是在 jar 中查找类文件呢?
  • Codebase jnlp 标签中的参数?无论如何,这在我的回答中。
  • 当它试图在服务器上查找类文件时,我设法通过返回 404 而不是重定向来使其工作。我不知道为什么它会为类文件进入服务器,但这是下一步要弄清楚的。至少它现在可以工作了..
  • @Erik Example 4 似乎接近您的情况,尽管您没有指定示例 HTML 文件的路径。如果它不在 /jars/ 文件夹中,那么隐式代码库将指向与您的 HTML 文件相同的目录。

标签: java jsp applet jnlp next-generation-plugin


【解决方案1】:

我的 JNLP 使用外部 jar,我在 &lt;jnlp&gt; 标记中定义了 codebase="http://example.com/full/path/to/jars/"href="http://example.com/full/path/to/jars/file.jnlp"

编辑试试我的working example - click the Lancer le planificateur button 看看它的实际效果。

edit2查看JNLP as a Applet in HTML page,看看Object而不是Applet是否会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    相关资源
    最近更新 更多