Hi All,
I am trying to deploy a single executable jar that makes use of a c++
library which has been run through the generator.
So far I have been successful in creating a single working jar for
linux, but my Windows jar is not cooperating. If QtCore4.dll,
QtGui4.dll, QtSql4.dll, etc. are found in PATH, the jar runs fine.
However, if they are not in PATH, I receive "UnsatisfiedLinkError: Can't
find dependent libraries" when loading my custom library.
My jar consists of:
qtjambi-deployment.xml
bin\
com\
JambiApp.class
The bin directory contains the qt native libs as well as my library, and
the com directory contains the needed class files. JambiApp.class
contains the main function.
My deployment spec is:
<qtjambi-deploy system="win32">
<cache key="sketcher"/>
<!-- Runtime libraries, automatically loaded... -->
<library name="bin/mingwm10.dll" load="yes" />
<library name="bin/QtCore4.dll" />
<library name="bin/QtGui4.dll" />
<library name="bin/QtSql4.dll" />
<library name="bin/QtSvg4.dll" />
<library name="bin/QtNetwork4.dll" />
<library name="bin/QtXml4.dll" />
<library name="bin/qtjambi.dll" />
<library name="bin/com_trolltech_qt_core.dll" />
<library name="bin/com_trolltech_qt_gui.dll" />
<library name="bin/com_trolltech_qt_sql.dll" />
<library name="bin/com_trolltech_qt_svg.dll" />
<library name="bin/com_trolltech_qt_network.dll"/>
<library name="bin/com_trolltech_qt_xml.dll" />
<library name="bin/com_trolltech_sketchtool.dll" />
</qtjambi-deploy>
Jar execution output:
java -jar sketcher.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
at
com.trolltech.sketchtool.appSketchTool.<clinit>(appSketchTool.java:11)
at JambiApp.main(JambiApp.java:11)
Caused by: java.lang.RuntimeException: Loading library failed, progress
so far:
Unpacking .jar file: 'sketcher.jar'
Checking Archive 'sketcher.jar'
- cache key='sketcher'
- adding 'mingwm10.dll' to library map
- library: name='bin/mingwm10.dll',
- adding 'QtCore4.dll' to library map
- library: name='bin/QtCore4.dll',
- adding 'QtGui4.dll' to library map
- library: name='bin/QtGui4.dll',
- adding 'QtSql4.dll' to library map
- library: name='bin/QtSql4.dll',
- adding 'QtSvg4.dll' to library map
- library: name='bin/QtSvg4.dll',
- adding 'QtNetwork4.dll' to library map
- library: name='bin/QtNetwork4.dll',
- adding 'QtXml4.dll' to library map
- library: name='bin/QtXml4.dll',
- adding 'qtjambi.dll' to library map
- library: name='bin/qtjambi.dll',
- adding 'com_trolltech_qt_core.dll' to library map
- library: name='bin/com_trolltech_qt_core.dll',
- adding 'com_trolltech_qt_gui.dll' to library map
- library: name='bin/com_trolltech_qt_gui.dll',
- adding 'com_trolltech_qt_sql.dll' to library map
- library: name='bin/com_trolltech_qt_sql.dll',
- adding 'com_trolltech_qt_svg.dll' to library map
- library: name='bin/com_trolltech_qt_svg.dll',
- adding 'com_trolltech_qt_network.dll' to library map
- library: name='bin/com_trolltech_qt_network.dll',
- adding 'com_trolltech_qt_xml.dll' to library map
- library: name='bin/com_trolltech_qt_xml.dll',
- adding 'com_trolltech_sketchtool.dll' to library map
- library: name='bin/com_trolltech_sketchtool.dll',
- using cache directory:
'C:\DOCUME~1\gtt5\LOCALS~1\Temp\QtJambi_gtt5_x86_4.5.2
_01_sketcher'
- cache directory exists
Loading library: 'QtCore4.dll'...
- using deployment spec
- ok!
Loading library: 'qtjambi.dll'...
- using deployment spec
- ok!
Loading library: 'QtCore4.dll'...
- already loaded, skipping...
Loading library: 'com_trolltech_qt_core.dll'...
- using deployment spec
- ok!
Loading library: 'QtGui4.dll'...
- using deployment spec
- ok!
Loading library: 'com_trolltech_qt_gui.dll'...
- using deployment spec
- ok!
Loading library: 'com_trolltech_sketchtool.dll'...
- using deployment spec
at
com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(Nati
veLibraryManager.java:431)
at
com.trolltech.qt.internal.NativeLibraryManager.loadLibrary(NativeLibr
aryManager.java:325)
at com.trolltech.qt.Utilities.loadJambiLibrary(Utilities.java:144)
at
com.trolltech.sketchtool.QtJambi_LibraryInitializer.<clinit>(QtJambi_
LibraryInitializer.java:6)
... 2 more
Caused by: java.lang.UnsatisfiedLinkError: C:\Documents and
Settings\gtt5\Local
Settings\Temp\QtJambi_gtt5_x86_4.5.2_01_sketcher\bin\com_trolltech_sketchtool.dl
l: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699)
at java.lang.Runtime.load0(Runtime.java:770)
at java.lang.Runtime.load(Runtime.java:758)
at
com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(Nat
iveLibraryManager.java:458)
at
com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(Nati
veLibraryManager.java:426)
... 5 more
After execution all the libraries can be found in the cache directory.
I've been fighting with this for a while now, so any help would be
greatly appreciated!
Thanks,
-Greg
_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest