2015-12-13 3 views
2

У меня проблема с запуском нижнего кода Java за пределами компилятора eclipse. Внутри компилятора он работает нормально, но после экспорта в качестве исполняемой банки я получаю InvocationTargetException. Я считаю, что это относится к файлам dll, но после прочтения других решений здесь и попыток их реализации проблема остается нерешенной. Итак, мой вопрос: можно ли настроить eclipse через код или настройки для правильной экспорта программы?Tess4J InvocationTargetException

Соответствующий код

BTW C: \ Program Files \ Тессеракт-OCR содержит tessdata, gsdll64.dll, liblept170.dll, libtesseract303.dll

Maven зависимостей tess4j, JUnit, ghost4j

public Bot() { 
     System.setProperty("jna.library.path", "C:/Program Files/Tesseract-OCR"); 
     ocr2 = new Tesseract(); 
     ocr2.setDatapath("C:/Program Files/Tesseract-OCR"); 
     initLists(); 
     System.out.println(scan(0,0,500,500)); 
    } 
public String scan(int x, int y, int x2, int y2) { 
     BufferedImage i = rob.getScreen(x, y, x2, y2); 
     i = toBufferedImage(i.getScaledInstance(i.getWidth()*2, i.getHeight() *2, Image.SCALE_SMOOTH)); 
     try { 
      return ocr2.doOCR(i).trim(); 
     } catch (TesseractException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return ""; 
    } 

Ошибка

C:\Users\Blue\Desktop>java -jar bot.jar 
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(JarRsrcLoader.java:58) 
Caused by: java.lang.UnsatisfiedLinkError: The specified module could not be found. 

     at com.sun.jna.Native.open(Native Method) 
     at com.sun.jna.Native.open(Native.java:1759) 
     at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:260) 
     at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398) 
     at com.sun.jna.Library$Handler.<init>(Library.java:147) 
     at com.sun.jna.Native.loadLibrary(Native.java:412) 
     at com.sun.jna.Native.loadLibrary(Native.java:391) 
     at net.sourceforge.tess4j.util.LoadLibs.getTessAPIInstance(LoadLibs.java:78) 
     at net.sourceforge.tess4j.TessAPI.<clinit>(TessAPI.java:40) 
     at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:360) 
     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:273) 
     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:256) 
     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:237) 
     at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:221) 
     at debug.Bot.scan(Bot.java:480) 
     at debug.Bot.<init>(Bot.java:53) 
     at debug.Bot.main(Bot.java:24) 
     ... 5 more 

C:\Users\Blue\Desktop>pause 
Press any key to continue . . . 
+0

Вы подтвердили, что org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader присутствует в вашем упакованном файле JAR? Если этого нет, возможно, вы могли бы попробовать то, что предлагается здесь: http://stackoverflow.com/a/27283043/1990536 – Rai

+0

Спасибо, мне удалось найти исправление. – BlueCow

ответ

0

В случае, если кто имеет такой же вопрос, что я сделал в s скопируйте 3. DLL-файлы в папку System32. Тогда у меня возникла проблема с image.io, на которую у сайта было много ответов. Мое личное решение заключалось в экспорте банки в качестве моего кода и отдельной папки для библиотек.

+0

Вам не нужно устанавливать переменную 'jna.library.path' или прикоснуться к DLL, если вы не хотите загружать свою собственную библиотеку. – nguyenq

Смежные вопросы