Я недавно освоил Linux, и эта проблема поставила меня в тупик. Я использую HEC-HMS и HEC-DSSVue для работы на регулярной основе. Я использовал версии вдов в вине, но они действительно глючат. Поэтому я решил попробовать версии для Linux. ссылки ниже приведут вас к страницам загрузки для этих двух программ. Это бесплатные программы для гидрологии и управления данными.
После того, как я установил их и попытался запустить файл оболочки (например, HEC-HMS.sh
), я получил массу ошибок Java, которые я не понимаю. Если бы мне пришлось угадывать, я бы сказал, что java-файлы не могут быть найдены. Когда я проверяю, установлена ли ява, это так.
Вот вывод от терминала при попытке запустить HEC-HMS.sh
:
Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: /home/smythe/HEC/hec-hms35/java/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(Unknown Source)
at sun.awt.DebugHelper.<clinit>(Unknown Source)
at java.awt.Component.<clinit>(Unknown Source)
at javax.swing.ImageIcon.<clinit>(Unknown Source)
at hms.i.c(Unknown Source)
at hms.i.b(Unknown Source)
at hms.K.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-4" java.lang.UnsatisfiedLinkError: /home/smythe/HEC/hec-hms35/java/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at sun.security.action.LoadLibraryAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Toolkit.loadLibraries(Unknown Source)
at java.awt.Toolkit.<clinit>(Unknown Source)
at sun.print.CUPSPrinter.<clinit>(Unknown Source)
at sun.print.UnixPrintServiceLookup.getDefaultPrintService(Unknown Source)
at sun.print.UnixPrintServiceLookup.refreshServices(Unknown Source)
at sun.print.UnixPrintServiceLookup$PrinterChangeListener.run(Unknown Source)
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class java.awt.Toolkit
at java.awt.Color.<clinit>(Unknown Source)
at hms.model.l.<init>(Unknown Source)
at hms.model.ProjectManager.<init>(Unknown Source)
at hms.Hms.<init>(Unknown Source)
at hms.Hms.main(Unknown Source)
Exception in thread "Thread-2" java.lang.NoClassDefFoundError: Could not initialize class sun.print.CUPSPrinter
at sun.print.UnixPrintServiceLookup.getDefaultPrintService(Unknown Source)
at javax.print.PrintServiceLookup.lookupDefaultPrintService(Unknown Source)
at hms.util.f.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Я получаю аналогичные выводы при попытке запустить HEC-DSSVue.sh
. Если бы кто-нибудь мог пролить свет на решение, я был бы очень признателен.
Проблема оказалась в том, что программе требовались 32-битные версии определенных зависимостей.
Я посмотрел на сообщение об ошибке.
Я вполне уверен, Вы пропускаете библиотеки, или что они не могут быть считаны, брошенные, который это сообщение показывает дважды в трассировке: /home/smythe/HEC/hec-hms35/java/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
Это предполагает, что одна из двух вещей происходит:
Решение зависит от ситуации:
libxtst6
пакет для получения библиотек по системе. Если необходимо включать библиотеки в источник по некоторым причинам, необходимо загрузить их отдельно и включать их.ls -l /home/smythe/HEC/hec-hms35/java/lib/i386/xawt/
не причинил бы боль, таким образом, мы видим права владения на нем, а также прочитайте/пишите/выполните полномочия.)Вам не хватает библиотеки, которая требуется для этой программы.
/home/smythe/HEC/hec-hms35/java/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
Вам необходимо установить libXtst.so.6
. Поиск пакетов, содержащих этот файл, приводит к libxtst6 .
Could not initialize class sun.print.CUPSPrinter
Я думаю, что это часть JDK, но, похоже, требуется awt, который не мог быть инициализирован выше, поэтому, как только вы исправите первую ошибку, вы должны быть установлены.