Internet Explorer 状态栏
如果出现代码下载问题,第一个可能的信息来源在 Internet Explorer 自身的状态栏中。如果文档窗口中有一个表明发生问题的对象,例如小程序所在的灰色框,将光标放在该框上方就会使得 Internet Explorer 在状态栏的左侧显示它含有的任何错误信息。
要看到这一内容,需创建一个包含以下 HTML 代码的 HTML 文件: <HTML>
<HEAD>
</HEAD>
<BODY>
<applet code=DoesntExist.class name=DoesntExist
width=320 height=240>
<param name=cabbase value=NotThere.cab>
</applet>
</BODY>
</HTML>
在 Internet Explorer 中打开此页并确保已显示状态栏。如有必要,选中查看菜单中的“状态栏”项。一开始,状态栏可能只显示“完毕”一词,或者根本不显示任何消息,尽管小程序显示为一个空的灰色框。如果移动鼠标以使光标定位在小程序上方,状态栏就会显示以下消息:
"load:class DoesntExist not found"
该技术适用于所有涉及到 Java 小程序的错误,不管它是否使用代码下载技术。如果信息很长,则最大化浏览器窗口,使状态栏有更多空间显示更多的信息。但是,状态栏中的信息只能用一行显示。
回到顶端
Java 控制台或输出日志
对于小程序,Microsoft 虚拟机 (Microsoft VM) 还将错误信息输出到文件中或 Java 控制台上。该文件就是 Javalog.txt,它位于 windows\java 或 winnt\java 目录中。Java 输出日志文件和 Java 控制台均可在“Internet 选项”对话框的“高级”选项卡中启用。
如果已经启用了 Java 日志记录或控制台,并且打开了为上例创建的 HTML 文件,就会看到有关此错误的更为详尽的描述:
Skipping CAB: NotThere.cab
due to: java.io.FileNotFoundException: \D:\samples\Troubleshoot\NotThere.cab
java.lang.ClassNotFoundException: DoesntExist
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at com/ms/vm/loader/URLClassLoader.loadClass (URLClassLoader.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.processSentEvent (AppletPanel.java)
at com/ms/applet/AppletPanel.run (AppletPanel.java)
at java/lang/Thread.run (Thread.java)
此错误包括一个 Java 异常和调用堆栈,与状态栏中的信息相比,它对于确定错误原因和找到解决办法通常会更有用。在此情况下,有一个异常,指出 Microsoft VM 找不到 NotThere.cab 文件。ClassNotFoundException 指示 Microsoft VM 找不到 DoesntExist.class。更正前面的异常经常会更正随后的异常。
回到顶端
代码下载日志查看器
使用 CAB 文件下载 Java 类或 ActiveX 控件并将它们安装在客户机上时,Internet Explorer 还将生成代码下载过程的错误日志信息。此信息或许不能立即看到,但可以使用一个名为代码下载日志查看器的工具进行查看。
注意:如果在应当出现小程序的位置上什么也没有,甚至连灰色框也没有,这通常表明在试图将类装入 Java 程序包管理器时发生了错误。如果遇到这种症状,首先应从代码下载日志中寻找信息。
有关如何将 Java 类打包,以使 Java 类能被安装在客户机的 Java 程序包管理器中的说明,请参阅以下 Microsoft 知识库文章:
193877 (http://support.microsoft.com/kb/193877/) 如何使 Java 代码受信于 Internet Explorer
可以从以下 Microsoft Developer Network (MSDN) Web 站点下载代码下载日志查看器:
http://msdn.microsoft.com/downloads/samples/internet/browsertools/cdllogvw/default.asp (http://msdn.microsoft.com/downloads/samples/internet/browsertools/cdllogvw/default.asp)
要观察其工作方式,请按照下列步骤操作:1. 创建一个含有以下 HTML 代码的 HTML 文件:
<HTML>
<HEAD>
</HEAD>
<BODY>
<applet code=DoesntExist.class name=DoesntExist
width=320 height=240>
<param name=useslibrary value=NoSuchDU>
<param name=useslibrarycodebase value=NotThere.cab>
<param name=useslibraryversion value="1,0,0,1">
</applet>
</BODY>
</HTML>
2. 通过 Internet Explorer 打开此 HTML 文件。您可能观察到在应当显示小程序的位置上什么都没有,甚至连灰色框也没有,并且在状态栏、Java 控制台或 Java 输出日志中也都没有任何错误信息。在试图通过“useslibrary”PARAM 标记使用“分发单元”的过程中出错时,通常发生这种情况。
有关通过 Java 小程序创建和使用“分发单元”的更多信息,请参阅“参考”一节。
在这种情况下,代码下载日志显示类似于下面的内容:
*** Code Download Log entry (05 Sep 1999 @ 21:57:28) ***
Code Download Error: (hr = 8007007e) The specified module could not be found.
Operation failed. Detailed Information:
CodeBase: file:///D:/samples/Troubleshoot/NotThere.cab
CLSID: NoSuchDU
Extension: (null)
Type: (null)
LOG: Reporting Code Download Completion: (hr:8007007e, CLASSID: 0..., szCODE:(file:///D:/samples/Troubleshoot/NotThere.cab), MainType:(null), MainExt:(null))
--- Detailed Error Log Follows ---
LOG: URL Download Complete: hrStatus:800c0005, hrOSB:0, hrResponseHdr:0, URL:(file://D:\samples\Troubleshoot\NotThere.cab)
LOG: URL Download Complete: hrStatus:800c0005, hrOSB:0, hrResponseHdr:0, URL:(http://activex.microsoft.com/objects/ocget.dll)
LOG: Reporting Code Download Completion: (hr:8007007e, CLASSID: 0..., szCODE:(file:///D:/samples/Troubleshoot/NotThere.cab), MainType:(null), MainExt:(null))
“详细错误日志”的第一行是一个非零 hrStatus,它指示发生的第一个错误。在这种情况下,它指示“无法找到”的“模块”是 NotThere.cab。
查看代码下载日志的另一个方法
您还可以不借助代码下载日志查看器来查看代码下载日志:
1. 使用 Windows 资源管理器打开 Windows(或 \WINNT)目录下的“Temporary Internet Files”文件夹。
2. 在该文件夹中查找一个文件名以“?CodeDownloadErrorLog”打头的文件,将其拖到另一位置,如桌面上。
可能有很多具有类似名称的文件,这取决于您完成的代码下载数量。要区分这些文件,请增大 Windows 资源管理器中“名称”列的宽度以查看整个名称。该示例中的 HTML 文件创建了一个名为“?CodeDownloadErrorLog!name=NoSuchDU”的条目。
3. 只要将代码下载日志复制到一个常规文件夹后,就可以使用 Internet Explorer 打开它。
回到顶端
使用 JPMView 检查已安装的 Java 程序包
有一个作为 Visual J++ 的联机示例而提供的实用工具,使用该工具可以探测 Java 程序包管理器的内容,例如验证您想要下载并安装的 Java 程序包是否确实安装在客户机上。
要下载 Microsoft Package Manager Explorer,请访问下面的 MSDN Web 站点:
Java 程序包管理器查看器页面http://msdn.microsoft.com/vjsharp/productinfo/visualj/downloads/samples.asp (http://msdn.microsoft.com/vjsharp/productinfo/visualj/downloads/samples.asp)
回到顶端
使用 WinFile 检查已下载的程序文件
很多已下载的项目都存储在 Windows 目录下的 Downloaded Program Files 文件夹中。如果安装了 Internet Explorer 4.0 或更高版本,当您查看此文件夹时,Windows 资源管理器会显示下载对象的视图而不是显示此目录中的文件。如果需要查看 Downloaded Program Files 目录中的实际文件,可以使用 Windows 95、Windows 98 和 Windows NT 4 中的文件管理器查看: 1. 从 Windows 开始菜单中,选择运行,键入名称 Winfile 作为要打开的文件,然后单击确定。这将启动文件管理器。
2. 从查看菜单中,选择按文件类型,并且确保选中底部的标记为显示隐藏/系统文件的复选框。如果选中此复选框,文件管理器将显示 Downloaded Program Files 目录。
3. 单击确定。
4. 转到 Windows 目录(对于 Windows 95 和 Windows 98)或 WINNT 目录(对于 Windows NT)。打开名为“Downloaded Program Files”的目录(对于 Windows NT)或名为“downlo~1”的目录(对于 Windows 95 或 98)。您将看到那些通过 Internet Explorer 安装到您计算机上的文件列表,以及用来跟踪这些文件的 OSD 文件和 .inf 文件。
重要说明:建议您只将文件管理器用于查看这些文件。如果需要删除其中的任何文件,请使用 Windows 资源管理器查看 Downloaded Program Files 文件夹,右键单击相应的下载对象,然后选择删除。
回到顶端
使用 CABARC 检查 CAB 文件的内容。
Microsoft .NET Framework SDK 中包括的 CABARC 实用工具可用来创建 CAB 文件,还可以用来检查 CAB 文件。 cabarc l filename.cab 打印 CAB 文件中所包含文件的列表。它还将打印此 CAB 内部每个文件的路径,并使用和在 CAB 文件中一样的大/小写字符打印所有名称。
cabarc x *.osd 从“分发单元”中解压缩 .osd 文件。然后,可以使用文本编辑器查看 .osd 文件,将程序包名称、DU 的名称、版本等与下载 DU 的小程序标记中所使用的值进行比较。
回到顶端
使用 ChkTrust 校验数字签名。
ChkTrust 是包括在 Microsoft SDK for Java 中并在其中有相应介绍的一个代码签名工具。可以使用 ChkTrust 来确认 CAB 文件是否已按需签名,以及校验数字签名的客户端代码是否工作正常。
ChkTrust.exe 验证 CAB 文件的数字签名。有关更多信息,请访问以下 Microsoft Web 站点:
http://msdn2.microsoft.com/en-us/library/z045761b(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/z045761b(vs.71).aspx)
通过在命令提示符处键入以下命令来使用 ChkTrust:
chktrust mycab.cab
ChkTrust 执行数字签名校验,并显示下载代码时显示给用户的同一安全对话框,或者显示一个错误对话框。当您单击是、否或者确定时,ChkTrust 将打印签名校验的结果。
该工具有时会跳过安全对话框而只打印结果。这样做的一个常见原因是数字签名“总是受信任的”。您可以对此进行确认,如果需要,可在 Internet Explorer 的安全设置中加以更正。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
168941 (http://support.microsoft.com/kb/168941/) 关于 CAB 文件的常见问题
回到顶端
参考
有关使用 CAB 文件下载 Java 代码的其他信息,请访问下面的 Microsoft SDK for Java Web 站点:
http://www.microsoft.com/china/mscorp/java/default.mspx (http://www.microsoft.com/china/mscorp/java/default.mspx)
具体参考资料有 《程序员指南》中的“打包和分发软件”以及《工具参考》中的“软件分发工具”。
其他有用的知识库文章和上面引用到的文章的列表如下:
168941 (http://support.microsoft.com/kb/168941/) 关于 CAB 文件的常见问题
173469 (http://support.microsoft.com/kb/173469/) 如何启用 Javalog.txt 文件
175622 (http://support.microsoft.com/kb/175622/) PRB:运行 Java 小程序时的 SecurityExceptionEx 异常
193877 (http://support.microsoft.com/kb/193877/) 如何使 Java 代码受信于 Internet Explorer
有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的更多信息,请访问下面的 Microsoft Web 站点:
http://msdn.microsoft.com/workshop/entry.asp (http://msdn.microsoft.com/workshop/entry.asp)
http://msdn2.microsoft.com/en-us/ie/default.aspx (http://msdn2.microsoft.com/en-us/ie/default.aspx)
http://support.microsoft.com/default.aspx?scid=FH;[LN];iep&FR=0&SD=MSDN (http://support.microsoft.com/default.aspx?scid=fh;%5Bln%5D;iep&fr=0&sd=msdn)
MSDN Web Workshop 上的具体参考资料包括:
Introduction to Internet component download(Internet 组件下载介绍)http://msdn.microsoft.com/library/default.asp?url=/workshop/delivery/download/overview/overview.asp (http://msdn.microsoft.com/library/default.asp?url=/workshop/delivery/download/overview/overview.asp)
Internet component download(Internet 组件下载)http://msdn.microsoft.com/library/default.asp?url=/workshop/delivery/download/download_node_entry.asp (http://msdn.microsoft.com/library/default.asp?url=/workshop/delivery/download/download_node_entry.asp)
有关最新的 Microsoft 知识库文章以及有关 Visual J++ 和 SDK for Java 的其他支持信息,请访问下列 Microsoft Web 站点:
http://support.microsoft.com/default.aspx?PR=vjj (http://support.microsoft.com/default.aspx?pr=vjj)
http://www.microsoft.com/china/mscorp/java/default.mspx (http://www.microsoft.com/china/mscorp/java/default.mspx)
回到顶端
--------------------------------------------------------------------------------
这篇文章中的信息适用于:
• Microsoft Visual J++ 6.0 标准版
• Microsoft Software Development Kit for Java 2.02
• Microsoft Software Development Kit for Java 2.01
• Microsoft Software Development Kit for Java 2.02
• Microsoft Software Development Kit for Java 3.0
• Microsoft Software Development Kit for Java 3.1
• Microsoft Software Development Kit for Java 3.2
• Microsoft Software Development Kit for Java 4.0
• Microsoft Internet Explorer 4.0 128-Bit Edition
• Microsoft Internet Explorer 4.01 Service Pack 2
• Microsoft Internet Explorer 4.01 Service Pack 1
• Microsoft Internet Explorer 4.01 Service Pack 2
• Microsoft Internet Explorer 5.0
• Microsoft Internet Explorer 5.01
回到顶端
关键字: kbhowto kbjava kbfaq KB241111
回到顶端
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
[此贴子已经被作者于2007-11-11 14:01:46编辑过]
----------------解决方案--------------------------------------------------------