`
llyer110
  • 浏览: 20482 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JDIC在客户端运行异常的解决方案

    博客分类:
  • java
阅读更多

首先申明,我用的JDIC版本是2006-1102。

在我的之前的一篇介绍swing内嵌IE浏览器的文章(http://llyer110.iteye.com/blog/759752),介绍了一个第三方库——jdic,我们这里将介绍在运用该库时容易遇到的一个问题解决方案

        之前你要肯定你的应用程序是采用的java webstart,至于其他方式下有无该问题,恕小弟不才,没有经历过!

一、问题来源

 

              在服务器端部署好一个java webstart的应用程序后,客户端访问调用了jdic包的地方时,产生如下错误:

Unexpected ClassLoader for webstart, only com.sun.jnlp.JNLPClassLoader is supported.

        这是怎么回事呢?没有找到jdic的包,我已经放到jre/lib/ext目录下了呀? 我告诉你,你这就错了,很明显从错误来看,并非是没有找到相关包的错误信息。经过分析知道,在客户端环境下,jdic的类加载器是ExtClassLoader,而在javawebstart方式下,jdic只支持JnlpClassLoader,从如下代码中可以看出来

 

  private String caculateNativeLibPathBySunJWS()
    throws IOException, JdicInitException
  {
    String str1 = null;
    ClassLoader localClassLoader = super.getClass().getClassLoader();
    if (localClassLoader instanceof JNLPClassLoader)
    {
    	JNLPClassLoader localJNLPClassLoader = (JNLPClassLoader)localClassLoader;
        try {
          Method findLibraryMethod = localJNLPClassLoader.getClass().getDeclaredMethod("findLibrary", new Class[] { String.class });
          findLibraryMethod.setAccessible(true);
          Object[] paramters = { new String("jdic") };
          String str2 = (String)findLibraryMethod.invoke(localJNLPClassLoader, paramters);
          str1 = new File(str2).getParentFile().getCanonicalPath();
          WebBrowserUtil.trace("running path " + this.nativeLibPath);
          this.isShareNativeInitialized = true;
        } catch (Exception e) {
          e.printStackTrace();
        }
    }
    else
    {
      throw new JdicInitException("Unexpected ClassLoader for webstart, only com.sun.jnlp.JNLPClassLoader is supported.");
    }
    return str1;
  }

 

 再看以下源代码(initShareNative()中):

 

 String str1 = System.getProperty("javawebstart.version");
      if (str1 != null)
      {
        WebBrowserUtil.trace("Loaded by JavaWebStart,version is " + str1);
        this.nativeLibPath = caculateNativeLibPathBySunJWS();
        return;
      }

 所以不难得出为什么在开发环境下,能够正常运行了

 

二、解决方案

 

   通过以上原因的分析,我将jdic.jar放在服务端,并在jnlp文件中的<resources>标签下增加代码:

 

<jar href="jdic.jar" download="lazy"/>

  让他从这里载入,问题解决了!

 

哦!别忘了为新添加的jar包签名哟!

 

 

1
1
分享到:
评论

相关推荐

    jdic_JDIC_

    - **错误处理**:在调用JDIC的API时,应进行适当的错误处理,以防止因系统环境或权限问题导致的异常。 - **测试与调试**:在不同版本的32位Windows系统上进行充分的测试,确保应用程序的稳定性和兼容性。 最后,...

    java开发浏览器的jdic安装包

    - 虽然JDIC提供了强大的功能,但随着JavaFX和WebStart的兴起,以及现代浏览器API的发展,JDIC在某些场景下可能不再是最优选择,开发者需权衡利弊。 - 由于JDIC是开源项目,社区支持可能不如官方库活跃,遇到问题时...

    jdic开源jar包

    对于`jdic.dll`,如果是在Windows系统上运行,可以将其放在系统的`system32`目录下,这样Java虚拟机在运行时能自动找到并加载。在其他平台上,可能需要手动配置Java的`java.library.path`属性来指向相应的本地库文件...

    JDIC应用

    JDIC(JDesktop Integration Components)是一个开源项目,旨在帮助Java开发者在桌面应用程序中集成本地操作系统特性,从而使得Java应用能够更接近本机应用程序的用户体验。该项目由一系列组件组成,允许开发者利用...

    JDIC源码及Demo

    JDIC,全称为Java Desktop Integration Components,是一个开源的Java库,专门用于增强Java应用程序与桌面环境的...通过学习JDIC源码和运行Demo,开发者可以掌握更多与操作系统交互的技巧,提升应用程序的本地化体验。

    jdic包java嵌套浏览器

    - **依赖于IE**:由于它基于Windows Native Browser Wrapper,所以只能在Windows系统上运行,且依赖于IE浏览器。对于非Windows系统或不使用IE的用户,这可能会造成兼容性问题。 - **性能和稳定性**:因为是通过本地...

    jdic工具包jar

    1. **系统Tray图标支持**:JDIC允许Java应用程序在操作系统任务栏的系统托盘区域创建和管理图标,这对于很多后台运行的应用程序来说是必不可少的。 2. **桌面通知**:它提供了跨平台的通知机制,可以在适当的时候向...

    jdic 全套测试可用

    标题"jdic 全套测试可用"表明这个压缩包包含了完整的JDIC组件,可供开发者进行测试和使用,确保所有功能都能正常运行。这通常意味着包括核心库jdic.jar以及可能的本地库,如jdic.dll(Windows平台的动态链接库)和...

    jdic 32bit all

    标签中的 "jdic.dll" 和 "jdic.jar" 分别指向了JDIC在Windows平台上的动态链接库文件和Java的归档(JAR)文件。`.dll` 文件是Windows操作系统中的共享库,包含可被多个程序同时使用的函数和资源,而 `.jar` 文件则是...

    用java(jdic)做的浏览器

    几个同学一起用jdic技术做的一个浏览器!高手可以给点评价!随便也可以给我解决 设置为默认浏览器的 问题!!!!!!

    JDIC.rar_JDIC

    这对于那些需要后台运行的应用程序尤其有用,比如邮件客户端或下载管理器。 2. **Aero效果**:JDIC提供了访问Windows Aero Glass API的能力,使Java应用能够利用Windows Vista及更高版本的透明和模糊效果,提供更...

    jdic-0.9.5-bin-cross-platform

    《jdic-0.9.5-bin-cross-platform:多平台Java内嵌浏览器解决方案》 在IT领域,尤其是在Web应用开发中,内嵌浏览器组件的使用是至关重要的,它能够帮助开发者创建具备浏览网页功能的应用程序。jdic就是这样一款专为...

    jdic的实例的源码

    描述中提到的“在各个环境下的配置”,意味着JDIC库不仅在Windows环境下运行良好,还兼容其他操作系统,如Linux和Mac OS。这得益于其跨平台的设计。为了在不同平台上正确配置和使用JDIC,开发者可能需要了解一些关键...

    jdic.dll(32位、64位)

    **标题与描述解析** 标题和描述提到了"jdic.dll",这是一个动态链接库文件,分别有32位和64位两种版本。在Windows操作系统中,DLL(Dynamic Link ...遇到与jdic.dll相关的错误时,应按照上述步骤进行排查和解决。

    jdic.jar+jdic.dll+tray.dll 下载

    在本例中,`jdic.dll`是`jdic.jar`在Windows环境下的本地实现,它提供了与操作系统底层交互的能力,如访问系统资源、进行系统级别的字典操作等。由于Java本身并不直接支持本地系统调用,`jdic.dll`作为一个桥梁,...

    jdic的jar包及dll

    对于Windows平台特有的功能,如jdic.dll和tray.dll,需要确保这些库文件在运行时可被操作系统找到,通常是将其放在正确的位置或者设置系统环境变量。 总的来说,JDIC为Java开发者提供了一套强大的工具,帮助他们...

    JDIC(JDesktop Integration Components).jar

    JDIC的主要目标是解决Java应用程序在不同操作系统上桌面集成的挑战,比如通知区域图标、系统托盘、桌面小部件、桌面主题以及与其他桌面应用的交互等。 JDIC的核心特性包括: 1. **系统托盘(System Tray)支持**:...

    jdic.jar.zip

    《深入解析JDIC:Java Desktop Integration Components》 JDIC,全称为Java Desktop Integration Components,是Sun Microsystems公司开发的...随着Java技术的不断发展,JDIC在现代桌面应用开发中的地位依然不可忽视。

    jdic_64位_rar

    总的来说,“jdic_64位_rar”这个资源包是针对64位Windows用户的日语输入解决方案,包含了关键的jdic.dll库文件和IeEmbed.exe组件,旨在提供流畅的日语输入和网页浏览体验。用户在使用时需谨慎操作,以确保系统安全...

    jdic-0.9.4-bin-windows.zip

    1. **系统Tray支持**:JDIC允许Java应用程序创建并管理系统托盘图标,使得程序可以在任务栏通知区域运行,提供更友好的用户交互体验。 2. **屏幕截图和屏幕录制**:通过JDIC,开发者可以方便地实现屏幕捕获和录制...

Global site tag (gtag.js) - Google Analytics