首先申明,我用的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包签名哟!
分享到:
相关推荐
- **错误处理**:在调用JDIC的API时,应进行适当的错误处理,以防止因系统环境或权限问题导致的异常。 - **测试与调试**:在不同版本的32位Windows系统上进行充分的测试,确保应用程序的稳定性和兼容性。 最后,...
- 虽然JDIC提供了强大的功能,但随着JavaFX和WebStart的兴起,以及现代浏览器API的发展,JDIC在某些场景下可能不再是最优选择,开发者需权衡利弊。 - 由于JDIC是开源项目,社区支持可能不如官方库活跃,遇到问题时...
对于`jdic.dll`,如果是在Windows系统上运行,可以将其放在系统的`system32`目录下,这样Java虚拟机在运行时能自动找到并加载。在其他平台上,可能需要手动配置Java的`java.library.path`属性来指向相应的本地库文件...
JDIC(JDesktop Integration Components)是一个开源项目,旨在帮助Java开发者在桌面应用程序中集成本地操作系统特性,从而使得Java应用能够更接近本机应用程序的用户体验。该项目由一系列组件组成,允许开发者利用...
JDIC,全称为Java Desktop Integration Components,是一个开源的Java库,专门用于增强Java应用程序与桌面环境的...通过学习JDIC源码和运行Demo,开发者可以掌握更多与操作系统交互的技巧,提升应用程序的本地化体验。
- **依赖于IE**:由于它基于Windows Native Browser Wrapper,所以只能在Windows系统上运行,且依赖于IE浏览器。对于非Windows系统或不使用IE的用户,这可能会造成兼容性问题。 - **性能和稳定性**:因为是通过本地...
1. **系统Tray图标支持**:JDIC允许Java应用程序在操作系统任务栏的系统托盘区域创建和管理图标,这对于很多后台运行的应用程序来说是必不可少的。 2. **桌面通知**:它提供了跨平台的通知机制,可以在适当的时候向...
标题"jdic 全套测试可用"表明这个压缩包包含了完整的JDIC组件,可供开发者进行测试和使用,确保所有功能都能正常运行。这通常意味着包括核心库jdic.jar以及可能的本地库,如jdic.dll(Windows平台的动态链接库)和...
标签中的 "jdic.dll" 和 "jdic.jar" 分别指向了JDIC在Windows平台上的动态链接库文件和Java的归档(JAR)文件。`.dll` 文件是Windows操作系统中的共享库,包含可被多个程序同时使用的函数和资源,而 `.jar` 文件则是...
几个同学一起用jdic技术做的一个浏览器!高手可以给点评价!随便也可以给我解决 设置为默认浏览器的 问题!!!!!!
这对于那些需要后台运行的应用程序尤其有用,比如邮件客户端或下载管理器。 2. **Aero效果**:JDIC提供了访问Windows Aero Glass API的能力,使Java应用能够利用Windows Vista及更高版本的透明和模糊效果,提供更...
《jdic-0.9.5-bin-cross-platform:多平台Java内嵌浏览器解决方案》 在IT领域,尤其是在Web应用开发中,内嵌浏览器组件的使用是至关重要的,它能够帮助开发者创建具备浏览网页功能的应用程序。jdic就是这样一款专为...
描述中提到的“在各个环境下的配置”,意味着JDIC库不仅在Windows环境下运行良好,还兼容其他操作系统,如Linux和Mac OS。这得益于其跨平台的设计。为了在不同平台上正确配置和使用JDIC,开发者可能需要了解一些关键...
**标题与描述解析** 标题和描述提到了"jdic.dll",这是一个动态链接库文件,分别有32位和64位两种版本。在Windows操作系统中,DLL(Dynamic Link ...遇到与jdic.dll相关的错误时,应按照上述步骤进行排查和解决。
在本例中,`jdic.dll`是`jdic.jar`在Windows环境下的本地实现,它提供了与操作系统底层交互的能力,如访问系统资源、进行系统级别的字典操作等。由于Java本身并不直接支持本地系统调用,`jdic.dll`作为一个桥梁,...
对于Windows平台特有的功能,如jdic.dll和tray.dll,需要确保这些库文件在运行时可被操作系统找到,通常是将其放在正确的位置或者设置系统环境变量。 总的来说,JDIC为Java开发者提供了一套强大的工具,帮助他们...
JDIC的主要目标是解决Java应用程序在不同操作系统上桌面集成的挑战,比如通知区域图标、系统托盘、桌面小部件、桌面主题以及与其他桌面应用的交互等。 JDIC的核心特性包括: 1. **系统托盘(System Tray)支持**:...
《深入解析JDIC:Java Desktop Integration Components》 JDIC,全称为Java Desktop Integration Components,是Sun Microsystems公司开发的...随着Java技术的不断发展,JDIC在现代桌面应用开发中的地位依然不可忽视。
总的来说,“jdic_64位_rar”这个资源包是针对64位Windows用户的日语输入解决方案,包含了关键的jdic.dll库文件和IeEmbed.exe组件,旨在提供流畅的日语输入和网页浏览体验。用户在使用时需谨慎操作,以确保系统安全...
1. **系统Tray支持**:JDIC允许Java应用程序创建并管理系统托盘图标,使得程序可以在任务栏通知区域运行,提供更友好的用户交互体验。 2. **屏幕截图和屏幕录制**:通过JDIC,开发者可以方便地实现屏幕捕获和录制...