java-执行JAR时,获取ExceptionInInitializerError:未找到version.properties
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-执行JAR时,获取ExceptionInInitializerError:未找到version.properties,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2616字,纯文字阅读大概需要4分钟。
内容图文
![java-执行JAR时,获取ExceptionInInitializerError:未找到version.properties](/upload/InfoBanner/zyjiaocheng/654/1966f28c3d5c4dfb8fe41137f1858522.jpg)
我一直在用Eclipse编写一个可以在IDE中完美运行的小项目.然后,我通过Eclipse构建了一个可运行的.jar文件(该文件应包括jar本身内部的每个依赖库).
我在项目中使用了3个库:
> derby.jar
> qtjambi-4.7.1.jar
> qtjambi-win32-msvc2008-4.7.1.jar
然后,我使用此命令(在Windows中):
java -jar prova.jar
我得到这个:
Connected to database
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.ExceptionInInitializerError: version.properties not found!
at com.trolltech.qt.Utilities.<clinit>(Unknown Source)
at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(Unknown Source)
at com.trolltech.qt.QtJambiObject.<clinit>(Unknown Source)
at WAAAGH.main(WAAAGH.java:52)
... 5 more
如您所见,derby.jar正在按预期方式工作(“已连接到数据库”),但是Qt-Jambi有一个错误,我无法理解.任何想法?
编辑:WAAAGH是包含主要方法的类,第52行包含在:
QApplication.initialize(args);
解决方法:
FWIW,version.properties的位置最近已更改为位于com / trolltech / qt / version.properties软件包的软件包名称空间中.原来的位置是一个糟糕的设计选择,现在已得到纠正.问题是,如果您的类路径中还有另一个JAR,而且它也有一个顶级文件,则ClassLoader有权认为带有该文件的JAR是该程序包的授权,因此不需要在另一个JAR中搜索该文件.包是Java中最小的可部署单元,只有专业的ClassLoader(例如OSGi中使用的那些)具有可解决Java设计这一部分的功能.
通常,您的顶级(应用程序JAR)将在列表中排在第一位,我敢打赌,您有一个或多个文件,例如/log4j.properties /commons-logging.properties等…是因为存在一个或多个文件,然后屏蔽(隐藏)qtjambi-XYZjar中的文件,使其在运行时不可见.这就是为什么当您测试某个方案时该问题可能不存在,而当您尝试另一个方案时(当您以某种方式更改ClassPath时)却出现的原因.
我对http://qt.gitorious.org/qt-jambi/qtjambi-community/commit/f18ce5da3e30b43424bf94e49adf8c4cac0d9862所做的承诺在代码中更好地说明了最近的更改,以使生活更美好.
从来都不应该将QtJambi可再发行的JAR中的version.properties文件复制到类路径的其他部分(例如您所用的顶层项目prova.jar)中,此错误已得到纠正.对于下一个版本.从长远来看,完全消除对文件的需求是我的目标.我的目标是80%地完成该工作,因为在同一类路径中并存多个本机JAR将大大简化部署和入门指南.以及使它们与OSGi和Eclipse完美兼容.
但是还没有发布包含此更改的版本,但是我非常接近(对于Qt 4.7.4,这样做已经30天内了).
开源插件警报:请考虑从http://lists.qt.nokia.com/mailman/listinfo加入http://lists.qt.nokia.com/pipermail/qt-jambi-interest/的邮件列表以获取公告.
内容总结
以上是互联网集市为您收集整理的java-执行JAR时,获取ExceptionInInitializerError:未找到version.properties全部内容,希望文章能够帮你解决java-执行JAR时,获取ExceptionInInitializerError:未找到version.properties所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。