You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Open Web Start执行JNLP文件报错问题求助

问题:Open Web Start运行Oracle Forms JNLP时出现netscape/javascript/JSException类找不到错误

我有一个基于Java Web Start的旧Applet,启动该Applet使用的JNLP文件如下:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="6.0+" codebase="http://11.161.4.122:7777/aw_htm/">
  <information>
    <title>Webstart Oracle Forms</title>
    <vendor>www.testtest.it</vendor>
    <homepage href="http://www.testtest.it/"/>
    <description>Webstart Oracle Forms</description>
  <icon kind="shortcut" href="http://11.161.4.122/aw_htm/AW_3.ico" />
  <shortcut online="true">
  <desktop />
  <menu submenu="Avvio vvvvvv" />
  </shortcut>
  </information>
  <security>
    <all-permissions/>
  </security>
  <update check="timeout" policy="always"/>
  <resources>
    <java version="1.6.0+"/>
    <jar href="frmallIM_runtimeHalt.jar" download="eager" main="true"/>
    <jar href="awsicon.jar"/>
    <jar href="yyy-pjc-core.jar"/>
    <jar href="yyy-pjc-util-print.jar"/>
    <jar href="yyy-pjc-anpr-samlgenerator.jar"/>
    <jar href="frmwebutil.jar"/>
    <jar href="FormsGraph.jar"/>
  </resources>
  <applet-desc name="Webstart Oracle Forms" main-class="oracle.forms.engine.Main" width="990" height="660">
    <param name="background" value="sfondo11g-dark.jpg"/>
    <param name="logo" value="logomim.gif"/>
    <param name="serverApp" value="default"/>
    <param name="lookAndFeel" value="oracle"/>
    <param name="allow_debug" value="true"/>
    <param name="separateFrame" value="true"/>
    <param name="em_mode" value="1"/>
    <param name="latencyCheck" value="true"/>
    <param name="networkRetries" value="240"/>
    <param name="serverArgs" value="escapeParams=true module=A00LOGIN.fmx userid=  debug=no host= port= jvmcontroller=yyyweb buffer_records=no debug_messages=no array=no obr=no query_only=no quiet=yes render=no record= tracegroup= log= term=/home2/xxx/lib/xxx.res P_SEPARATEFRAME=true P_ADRS= P_ALIAS=xx P_IDSSO= P_AMBIENTE= P_ENTE= P_LINGUA= P_APPLICAZIONE= P_HTTPHOST=11.161.4.122:7777"/>
    <param name="serverURL" value="http://11.161.4.122:7777/forms/lservlet?ifcfs=http://11.161.4.122:7777/forms/frmservlet?config=yyyWEBJPI_8&#38;ifsessid=WLS_FORMS.formsapp.999&#38;acceptLanguage=it-IT;"/>
    <param name="colorScheme" value="teal"/>
    <param name="splashScreen" value="prodotto.gif"/>
    <param name="clientDPI" value="96"/>
    <param name="dontTruncateTabs" value="true"/>
  </applet-desc>
</jnlp>

因公司需维护该产品,我选择仍在维护的Open Web Start作为Java Web Start的替代方案,已安装Open Web Start,但运行上述JNLP文件时出现以下错误:

[ITW-CORE][2024-06-20 16:22:45.064 CEST][DEBUG][com.openwebstart.proxy.direct.DirectProxyProvider] Using NO_PROXY for http://11.161.4.122:7777/aw_htm/netscape/javascript/JSException.class
[ITW-CORE][2024-06-20 16:22:45.119 CEST][ERROR][net.sourceforge.jnlp.Launcher]
General Throwable encountered:
java.lang.NoClassDefFoundError: netscape/javascript/JSException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.newInstance(Class.java:412)
    at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:565)
    at net.sourceforge.jnlp.Launcher.launchApplet(Launcher.java:489)
    at net.sourceforge.jnlp.Launcher.access$400(Launcher.java:72)
    at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:665)
Caused by: java.lang.ClassNotFoundException: netscape.javascript.JSException
    at net.sourceforge.jnlp.runtime.classloader.JNLPClassLoader.lambda$loadClass$9(JNLPClassLoader.java:1452)
    at java.util.Optional.orElseThrow(Optional.java:290)
    at net.sourceforge.jnlp.runtime.classloader.JNLPClassLoader.loadClass(JNLPClassLoader.java:1452)
    ... 8 more

我使用Java 8运行所有程序,请问这是配置问题还是Open Web Start与该JNLP或Applet不兼容?


问题分析

netscape.javascript.JSException属于Java SE的plugin.jar,在Java 8环境中该jar包默认存在,但Open Web Start的类加载机制可能未自动包含这个系统jar,或者安全策略限制了Applet对该类的访问,导致出现类找不到的错误。这属于配置问题,而非Open Web Start与JNLP/Applet的兼容性问题。

解决步骤

  • 修改JNLP的Java配置:在<resources>下的<java>标签中添加JVM参数,强制加载plugin.jar:

    <java version="1.6.0+" args="-Djnlp.include.plugin.jar=true"/>
    

    也可以显式指定类路径包含系统的plugin.jar:

    <java version="1.6.0+" args="-classpath ${java.home}/lib/plugin.jar"/>
    
  • 检查Open Web Start安全设置:

    • 确保Open Web Start将JNLP所在站点添加到信任列表,若JNLP未签名,需手动信任该发布者。
    • 确认Open Web Start的运行时环境为Java 8,可在Open Web Start的设置中指定Java 8作为默认JRE。
  • 验证Oracle Forms依赖完整性:

    • 检查JNLP中引用的frmallIM_runtimeHalt.jar等包是否包含Forms运行所需的全部依赖,尤其是与JavaScript交互相关的类。
    • 确认使用的Oracle Forms版本与Java 8兼容,部分旧版本Forms需安装官方补丁才能适配Java 8。
  • 尝试添加扩展引用:在JNLP的<resources>中添加Java Plugin扩展引用,确保加载相关系统组件:

    <extension name="Java Plug-In" href="http://java.sun.com/products/plugin/1.6.0/plugin.jnlp"/>
    

内容的提问来源于stack exchange,提问作者Soku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:24:54