Сканирование с помощью Java-приложения 32-разрядная работа на NetBeans, но не на RAD
У меня есть приложение Java, написанное на 64-машинной системе (windows7) с использованием IDEA NetBeans и выполненное с использованием 32-битной Java 7. Приложение работает нормально на 32-битной машине, и сканер работает нормально, используя uk.co.mmscomputing.device.twain
, Теперь я преобразовал проект в проект maven и использовал RAD IDEA. Когда я запускаю приложение на том же 32-битном компьютере, я получаю следующую ошибку:
java.lang.UnsatisfiedLinkError: uk.co.mmscomputing.device.twain.jtwain.ngetSourceManager()Luk/co/mmscomputing/device/twain/TwainSourceManager;
java.lang.UnsatisfiedLinkError: uk.co.mmscomputing.device.twain.jtwain.ngetSourceManager()Luk/co/mmscomputing/device/twain/TwainSourceManager;
at uk.co.mmscomputing.device.twain.jtwain.ngetSourceManager(Native Method)
at uk.co.mmscomputing.device.twain.jtwain.access$100(jtwain.java:12)
at uk.co.mmscomputing.device.twain.jtwain$1.run(jtwain.java:347)
α⌠° 09, 2018 11:19:51 AM listener.ChooseFileActionListener scanFileActionPerformed
SEVERE: Cannot load Twain Source Manager.
uk.co.mmscomputing.device.twain.TwainIOException: Cannot load Twain Source Manager.
at uk.co.mmscomputing.device.twain.jtwain.getSourceManager(jtwain.java:127)
at uk.co.mmscomputing.device.twain.jtwain.acquire(jtwain.java:199)
at uk.co.mmscomputing.device.twain.TwainScanner.acquire(TwainScanner.java:62)
at listener.ChooseFileActionListener.scanFileActionPerformed(ChooseFileActionListener.java:164)
at listener.ChooseFileActionListener.actionPerformed(ChooseFileActionListener.java:72)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Я настраиваю путь сборки для запуска JRE 7 32 бит, я даже добавил профиль в pom.xml:
<profiles>
<profile>
<id>WIN_SWT</id>
<activation>
<os>
<family>Windows</family>
<arch>x86</arch>
</os>
</activation>
</profile>
</profiles>
есть мысли по этому поводу?
1 ответ
UnsatisfiedLinkError означает, что собственный код (DLL под Windows) не может быть загружен JVM, здесь драйвер Twain. Скорее всего, вам нужно переделать конфигурацию в RAD, которую вы сделали ранее под Netbeans (или установщик сделал для вас), чтобы процесс связывания мог быть успешным. Это также может быть вызвано смешиванием 32-битной и 64-битной JVM и драйверов.