我一直在用 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);
最佳答案
QtJambiObject
是如何加载的?你把它打包到你的 prova.jar
里了吗?丢失的文件 version.properties
应该是顶级相同 jar 的一部分(不在任何子目录中)。看来您还没有将它打包到顶层的 prova.jar
中。参见 this解释它是如何加载的。
在命令行上指定所有 jar 和主类可能会更好:
java -classpath prova.jar;derby.jar;qtjambi-4.7.1.jar;qtjambi-win32-msvc2008-4.7.1.jar <your main class>
替换; with : 如果你在 *nix 上运行
关于java - 执行JAR时,得到ExceptionInInitializerError : version. properties not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608765/