2016-08-26 22 views
0

Я сделал Java OCR проект с Tesseract в Mirth .Когда я запускаю файл фляги из Радости, я получаю это error.When Я ищу его, я обнаружил, что есть инициализации (), а также это защищенная пустота в Tesseract.java. Я думаю, что, возможно, это причина этой ошибки. Что мне делать? Большое вам спасибо за помощь.java.lang.IllegalAccessError: попытался получить доступ к методу net.sourceforge.tess4j.Tesseract. <init>() V из класса Tess4jTest.TestTess

package Tess4jTest; 

import java.io.File; 
import java.io.IOException; 
import net.sourceforge.tess4j.*; 

public class TestTess { 

public static String Tc; 
public static String phone; 
public static String date; 


public static void main(String[] args) { 
    //System.out.println(returnText("C:\\Users\\Nevzat\\Desktop\\deneme.pdf")); 
} 

public static String returnText(String fileName){ 

    File imageFile = new File(fileName); 
    if(imageFile.exists()){ 
     Tesseract instance = new Tesseract(); 
     instance.setDatapath("C:\\imageRAD\\Onam\\tessdata"); 
     String result = null; 
     try { 
      result = instance.doOCR(imageFile); 
     } catch (TesseractException e) { 
      System.err.println(e.getMessage()); 
     } 
     if(result!=null){ 

      int i=result.indexOf("Numarasn: "); 
      int j=result.indexOf("Tel No:"); 
      int k=result.indexOf("Bilgllendirme Tarihl:"); 

      Tc = result.substring(i+10, i+21); 
      phone = result.substring(j+8,j+23); 
      date = result.substring(k+22,k+32); 
      //System.out.println(result); 
     }else{ 
      return "Null Error!"; 
     } 

    }else{ 
     return "Does not found a file!"; 
    } 

    return Tc+","+phone+","+date; 
} 

public static String returnTC() throws IOException{ 
    return Tc; 
} 

public static String returnPhone() throws IOException{ 
    return phone; 
} 

public static String returnDate() throws IOException{ 
    return date; 
} 

} 
+0

Это немного трудно сказать, является эта линия бросает исключение? 'Tesseract instance = new Tesseract();' Если это так, возможно, есть еще один конструктор с аргументами, которые вы можете вызвать, или заводским методом, который возвращает Tesseract. – ebyrob

+0

Не существует исключения для строки. Фактически, когда я вызываю 'tess4j-3.0.2.jar' для проекта java в веселье, я получаю эту ошибку. Однако я называю' tess4j-3.2.1.jar', I получите эту ошибку как ** java.lang.NoSuchFieldError: RESOURCE_PREFIX ** –

+0

Все исключения имеют трассировку стека, а следы стека стека имеют номера строк в них. Я не могу определить, в какой строке вашего опубликованного кода было отправлено исключение, на основе ваших комментариев. Если вы понижаете tess4j, это должно быть до версии 2.0.0. (в любом случае, возможно, рекомендуется обновить все до последней версии) – ebyrob

ответ

1

Ошибка, возникшая при попытке создать объект с помощью частного конструктора. (<init>() это имя конструктора без параметров)

Глядя на tess4j источника я нашел метод со следующей документацией:

  • @deprecated As of Release 2.0, use default constructor instead.

Глядя на источник, прежде чем 2,0 откосов конструктор по умолчанию был частным.

Это значит, что наиболее вероятно, что у вас возникла проблема с версией выше 2.0, но в вашей среде работает более ста лет, чем 2.0.

Либо обновите среду, либо снимите библиотеку, которую вы создаете, чтобы исправить ее.

0

я решил ошибку и закончили project.I шаг за шагом упоминания

1.You have to use right jar files for tess4j.

2.Add java project all of in the tess4j-3.2.1.zip except tess4j-3.2.1.jar via Build Path.

3.Add tess4j-1.5.jar from this

4.Add tessdata folder, ghost4j-0.5.1.jar , jna-4.1.jar , tess4j.jar and jar file of your java project.