Jar文件执行故障排解

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:leijian_118
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Jar文件是Java 的可执行文件,在安装有JRE的机器上可以直接执行。然而实际操作时常常会遇到显示“could not find the main class. program will exit”无法执行的故障,有时虽能执行但无图片显示,或音乐失声,或干脆无反应。本文将针对这些执行故障进行分析,并提出排除和解决的方法。
  关键词:Java;Jar文件;故障排解
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)21-30465-02
  
  Jar File’s Running Troubleshooting
  YANG Pei-li
  (Department of Electronic and Information Engineering, Shazhou Professional Institute of Technology, Zhangjiagang 215600, China)
  Abstract: Jar file is Java executable file, it can be executed on the any machines with JRE. However, in the actual operation we often been told "could not find the main class. Program will exit", and the program will stop running. Sometime program can run,but no picture, or no music, or no response. This paper will analysis these running trouble, and proposed solutions.
  Key words: Java; Jar file; Troubleshooting
  
  1 引言
  
  Jar是“java archive file”的简略表示,Jar文件是Java的压缩文件。Jar文件通常用来压缩保存多个class文
  件,可置入标明主类的文件manifest.mf,这样在装有JRE的机器上双击Jar文件,即可执行。Jar文件常可用于Java应用软件的包装发布。
  虽然Jar文件容易建立,但要创建一个可正常执行的Jar文件,还是需要关注多个方面的细枝末节。另外环境变量的设置和关联程序的格式设置也非常重要,任何一个方面的差错就会导致Jar文件执行故障。本文旨在探讨Jar文件常见的执行故障和排解方法。
  
  2 生成了却不可正常执行
  
  Jar文件通常是在提示符窗口下,利用JDK附带的jar.exe,对已编译的class文件进行包装而生成的。jar.exe的命令格式:
  jar 参数 [jar-file] [manifest-file] classfiles
  Jar文件执行故障中,最常见的是包装生成了Jar文件,却不可正常执行,显示错误信息“could not find the main class. program will exit”。这很大的可能是使用jar.exe命令时,对两个细节的把握不当所致:
  1)Jar命令的参数选择
  Jar命令的参数应选“cfm”或者“cvfm”,其中涉及的每个字母的含意如下:
  -c创建新的归档文件
  -v在标准输出中生成详细输出
  -f指定归档文件名
  -m包含指定清单文件中的清单信息
  2)标明文件格式
  标明文件可用任何文本编辑器建立,文件内容有固定的格式,通常由两行组成(假定主类为Hello.class):
  第一行:Main-Class: Hello
  第二行:空行
  第一行中的“Main-class:”和类名之间必须要有一个空格,主类名后不用“.class”的后缀。第二行则什么也不用输入,只需保证存在。
  注意上述细节以后,则可以排除因Jar文件本身的问题而不能执行的故障。
  
  3 它机可执行本机不可执行
  
  “Write once, run anywhere”,这是Java的招牌——一处编写,处处可运行,大家来使用Java语言编程吧。
  然而实际设计中,经常会遇到这样的执行故障:生成的Jar文件竟然会挑剔机器,那台上可良好运行,这台上一堆错误信息。
  它机可执行,说明Jar文件本身没有问题;本机不可执行,问题应该是在本机上。此时需要逐个验证如下环节,直到问题解决:
  1)RE安装
  2)环境变量的设置
  主要设定classpath,类似:C:\Program Files\Java\jre1.6.0_04\lib
  3)关联程序的设定
  关联程序通常是javaw.exe,在打开方式下直接可关联。
  4)注册表检查
  在某些机器上进行以上核查后,Jar文件还是不能正常执行,这时需要按如下步骤检查注册表:
  ①识别.jar文件为jarfile
   HKEY_CLASSES_ROOT\.jar
  (默认)jarfile
  HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.jar
  (默认)jarfile
  ②给jarfile文件设定关联程序
  HKEY_CLASSES_ROOT\jarfile
  (默认)Executable Jar File
  HKEY_CLASSES_ROOT\jarfile\shell\open\command
  (默认)"C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe" -jar "%1"
  HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Jarfile\shell\open\command:
  (默认)"C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe" -jar "%1"
  ③设定关联程序javaw.exe的执行格式
   HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command
  (默认)"C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe" -jar "%1"
  HKEY_CURRENT_USER\Software\Classes\Applications\javaw.exe\shell\open\command
  (默认)"C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe" -jar "%1"
  ④jar文件的打开方式列表
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithList
  (默认)javaw.exe
  HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithProgids
  "WinRAR"=hex(0):
  "jarfile"=hex(0):
  OpenWithList项下有多条记录时,jar默认关联程序(即打开方式)就有多个,可对y该项下的记录进行清理,清除不必要的或错误的关联方式。
  OpenWithProgids指示了对.jar文件的处理方案,可兼选针对jarfile和WinRAR的两种。
  
  4 可执行但无对应结果
  
  我们有时会发现Jar文件可执行而无预期结果的现象,其实这并不是一个错误。
  javaw.exe是没有对应的控制台窗口的,如果Java程序是在字符窗口下进行输入和输出那么包装成的Jar文件,双击执行时没有错误发生,但也没有运行过程和结果。这是因为Jar默认由javaw.exe执行,而javaw.exe不象java.exe一样可提供一个相应的窗口来演示程序的运行。
  对于个别纯字符窗口运行的Jar文件,我们可以先打开一个字符窗口(即command命令窗口),在命令窗口中执行:
  java–jarjar文件
  这时字符窗口的输入和输出就能正常进行了。
  需要注意的是字符窗口中的命令格式,用java.exe命令方式执行时,class文件可不带后缀名,如“java Hello”,但用java.exe执行Jar文件则一定要带上后缀名,如“java–jar Hello.jar”,否则将出现“Unable to access jarfile…”的错误信息。
  
  5 可执行但图片不显示
  
  对于可显示图片的GUI程序,有时会发现窗口中该有图片显示的地方缺了图片,其他运行情况正常,这是因为Jar文件运行时没有访问到对应的图片文件。
  Jar文件中包含的图片文件是不能被Jar文件运行时读到的,声音文件、文本文件等其他文件也类同。Java软件包装时应注意这一点,将class文件归并到一个Jar文件中,其他的文件应另外存放。如:
  
  如上,将Note.jar要访问的三个文件独立存放在jar包外,访问方能正常进行。在程序访问多文件的情况下,可把要访问的文件等归并到一个文件夹,在Java程序中有关访问文件的方法参数作相应修改即可。
  
  6 结束语
  
  跨平台的java语言编出的程序“一次编写,处处运行”,这使得Java语言越来越得人心,Java应用程序包装成可执行的Jar文件,可以缩短内存加载时间,也方便了java程序的执行。尤其对于Java初学者,这是富有趣味的,同时也是一个挑战。用Jar.exe对java application打包生成可执行的jar文件,时会遇到一些疑难故障,本文就此作了探讨和解决。
  
  参考文献:
  [1] Bruce Eckel.Java编程思想[M].3版.北京:机械工业出版社,2005.
  [2] 张洪斌.Java程序设计百事通[M].北京:清华大学出版社,2001.
其他文献
摘要:随着党校系统信息化建设进程不断推进,全省党校系统网络互联互通和资源共建共享越来越显得重要和急迫了。该文分析了VPN专网建设的可行性,详细论述了安徽省党校系统VPN专网建设的技术方案,并就在VPN专网平台上的资源共建共享进行了探析。  关键词:资源共建共享;SSL VPN;IPSec VPN  中图分类号:TP393文献标识码:A文章编号:1009-3044(2009)33-9218-03  
摘要:针对变速器在线检测已经成为汽车工业生产流水线重要组成部分的情况,开发了一个基于组态王软件的变速器检测监控系统。阐述了系统的硬件结构和软件总体规划,在介绍使用组态网的数组字典定义变量的基础上,论述了软件中的核心模块-换挡控制模块的流程图和模块的详细设计过程。  关键词:变速器;检测;换挡;数组字典;流程图   中图分类号:TP319文献标识码:A文章编号:    0 引言    随着民族汽车工
摘要:ArcIMS是ESRI公司的产品之一,它是顺应地理数据在互联网上传输、共享的要求而产生的,定位于Internet网上地图发布层面。它能满足无论是本地还是全球的多用户的网上信息与数据共享的要求,方便多用户同时在线查询和浏览地理信息数据。ArcIMS安装平台很多。目前在Windows环境下以Microsoft的IIS(Internet Information Server)作为Web服务器的居多
摘要:根据本人参加企业PIIS系统的经验,详细介绍了电力施工企业项目管理信息集成系统(Project Information Integration System简称PIIS)的建设过程及系统功能特点,并分析了系统为企业管理所带来的积极改变和良好的经济效益,以及系统的成功建设与实施对提高企业管理水平、实现总部统一管理、提升集中调控能力起到的巨大推动作用。  关键词:施工企业;信息化建设;信息系统 
摘要:针对SNMP(简单网络管理协议)的安全威胁,文中对SNMP协议在安全性方面存在的问题进行了论述,以某知名厂商为例,探讨了利用SNMP协议对其网络设备的攻击,并据此提出了一些防范的建议与措施。  关键词:SNMP;MIB;攻击  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)09-11611-03    The Security Analysis of SNMP
摘要:单片机应用技术学习涉及到的实验实践环节比较多,而且硬件投入比较大。随着计算机技术的进步,基于EDA技术的Proteus能很好解决这个问题。本文通过介绍51单片机最小化应用系统设计实例,详细说明了Proteus在单片机系统开发中的应用。  关键词:单片机;51单片机最小应用系统;Proteus仿真  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)18-21ppp-
摘要:本文指出了当前市面上家用电脑电源关于EMC方面不足的情况,并依据国家标准研制出一种新型的可以解决家用电脑电源EMI问题的无源滤波器。  关键词:电脑;电源干扰;无源滤波器  中图分类号:TN912 文献标识码:A文章编号:1009-3044(2008)06-1pppp-0c    1 电脑电源干扰分析    在我们的日常生活用电中,其实额定频率为50HZ的市电并不是“纯净”。由于电网中存在着
摘要:俄罗斯方块游戏很有趣味性,游戏吸引人的地方在于几个不规则的图形变化。那不规则图形能否完全覆盖全部空间呢,在理论上能得到结论吗?文中试着对L形方块入手,从理论上给出它能充满游戏空间的条件。  关键词:俄罗斯方块;L形方块;完全覆盖  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)12-20ppp-0c    The Condition of Russia-Bloc
摘要:基于ASP.NET 2.0和SQL SEVER 2000技术,采用Microsoft Visual Studio 2005编程环境开发了一套毕业设计管理信息系统。该系统运行安全可靠,功能较全,有效地提高了高校毕业设计管理工作的效率,为高校毕业设计实践教学管理提供了新的模式。   关键词:管理信息系统;ASP.NET 2.0;SQL Server 2000;数据库  中图分类号:TP311文献
摘要:本文对AutoCAD的二次开发技术进行了探讨,就AutoCAD六种开发技术AutoLISP,VisualLISP,ADS,VBA,Object ARX,Dot NET的内涵作了简要介绍,对其优缺点进行了详细的分析对比,指出ObjectARX和Dot NET是未来AutoCAD二次开发的方向,并为广大的AutoCAD二次开发人员选用其开发工具提供参考性意见。   关键词:AutoCAD;Aut