# Apache Tika: Warnmeldungen und Beispielcode



## MiMa (28. Sep 2017)

Hallo,
Seit Apachte Tike Version 1.16 hagelt es von roten Warnmeldungen.

```
Sep 28, 2017 5:02:38 PM org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
WARNUNG: JBIG2ImageReader not loaded. jbig2 files will be ignored
See https://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
TIFFImageWriter not loaded. tiff files will not be processed
See https://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.
J2KImageReader not loaded. JPEG2000 files will not be processed.
See https://pdfbox.apache.org/2.0/dependencies.html#jai-image-io
for optional dependencies.

Sep 28, 2017 5:02:38 PM org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem
WARNUNG: org.xerial's sqlite-jdbc is not loaded.
Please provide the jar on your classpath to parse sqlite files.
See tika-parsers/pom.xml for the correct version.
```
Was ich darüber finden konnte und gelesen habe, ist das Tika nun auch OCR Erkennung durchführen können soll und daher diese Bibliotheken benötigt.
Also geladen und in das Projekt eingebunden. Leider konnte ich kaum etwas dazu finden, wie man diese Meldungen weg bekommen kann. Viel englische Seiten, von denen ich kaum was verstanden habe.
Zurück zur Version 1.13 habe ich die Medlungen nicht mehr. Aber mit einer alten Bibliothek möchte ich nicht so gerne weiter Entwicklen, da es früher oder später doch zur aktuellen Bibliothek kommen wird.

Auch habe ich das Problem der Erkennung der Sprache

```
LanguageIdentifier identifier = new LanguageIdentifier("Text Mit Leerzeichen");
        String language = identifier.getLanguage();
        System.out.println("Language of the given content is : " + language);
```
Der Code funktioniert zwar aber LanguageIdentifier ist durchgestrichen (depricated).
Auch in den Beispielcode von Tika 1.16 ist alter Code so wie diesen.
Kann mir vielleicht jemand sagen, wie das jetzt funktionieren soll?
Auch habe ich mal einen Codeschnipsel gefunden, der aber nicht funktioniert.
Ich würde mich freuen, wenn mir jemand helfen würde.
Vielen Dank
M


----------



## mrBrown (28. Sep 2017)

MiMa hat gesagt.:


> Was ich darüber finden konnte und gelesen habe, ist das Tika nun auch OCR Erkennung durchführen können soll und daher diese Bibliotheken benötigt.
> Also geladen und in das Projekt eingebunden. Leider konnte ich kaum etwas dazu finden, wie man diese Meldungen weg bekommen kann. Viel englische Seiten, von denen ich kaum was verstanden habe.
> Zurück zur Version 1.13 habe ich die Medlungen nicht mehr. Aber mit einer alten Bibliothek möchte ich nicht so gerne weiter Entwicklen, da es früher oder später doch zur aktuellen Bibliothek kommen wird.


Wie bindest du es ein?




MiMa hat gesagt.:


> Der Code funktioniert zwar aber LanguageIdentifier ist durchgestrichen (depricated).
> Auch in den Beispielcode von Tika 1.16 ist alter Code so wie diesen.
> Kann mir vielleicht jemand sagen, wie das jetzt funktionieren soll?
> Auch habe ich mal einen Codeschnipsel gefunden, der aber nicht funktioniert.
> Ich würde mich freuen, wenn mir jemand helfen würde.


Einfach mal ins JavaDoc gucken 


			
				https://tika.apache.org/1.16/api/org/apache/tika/language/LanguageIdentifier.html hat gesagt.:
			
		

> *Deprecated*.
> use a concrete class of LanguageDetector


----------



## MiMa (28. Sep 2017)

Das JavaDoc Hilft auch nicht weiter, da es nicht verfügbar ist.
Ich habe schon geschaut, aber scheibar gibt es kein JavaDoc für Tika zu Laden.
In der API habe ich auch schon geschaut, aber dort wird es als Deprecated gekennzeichnet.
Alles was mit LanguageIdentifier zu tun hat ist überholt.

Danke für den LanguageDetector.
Wo holt man solche Informationen her?


----------



## mrBrown (28. Sep 2017)

MiMa hat gesagt.:


> Das JavaDoc Hilft auch nicht weiter, da es nicht verfügbar ist.
> Ich habe schon geschaut, aber scheibar gibt es kein JavaDoc für Tika zu Laden.
> In der API habe ich auch schon geschaut, aber dort wird es als Deprecated gekennzeichnet.
> Alles was mit LanguageIdentifier zu tun hat ist überholt.


Das ist jetzt zwar ziemlich spoiler, aber wie wäre es mit diesem JavaDoc: https://tika.apache.org/1.16/api/org/apache/tika/language/LanguageIdentifier.html (was oben beim Zitat dabei steht, wo übrigens auch bei steht, was man stattdessen nutzen sollte...)

Und noch mal die Frage, wie bindest du das ein?


Was ist btw die Api, in der du geschaut hast?


----------



## MiMa (28. Sep 2017)

Ich habe zwar in der 1.13 Api Dokumentation nachgeschaut, aber da steht das gleiche drin wie in Deinem Link. Mit dem JavaDoc zum Donwloaden haben wir uns missverstanden. Ich meinte das JavaDoc welches ich in der IDE einbinden kann, damit ich die Dokumentation zu sehen bekomme, wenn ich Methoden und deren Parameter einsetzen möchte.

Beim genaueren hinsehen habe ich gesehen wo steht was man stattdessen bensutzen soll. Ist leicht zu übersehen, so klein bei den vielen Text.

Bezüglich der Einbindung habe ich die Jar Dateien in die Bibliothek hinzugefügt.
Da die in den Klassen eh nicht benutzt werden, müssen die auch nicht importiert werden?

Vielen Dank


----------



## mrBrown (28. Sep 2017)

Du solltest dich mal mit Maven vertraut machen, darüber gibt es dann garantiert auch das passende JavaDoc


----------



## MiMa (28. Sep 2017)

Ja da habe ich schon lange drüber nach gedacht, das Maven zu nutzen. Habe gerade Git am laufen bekommen und den Umgang damit gelernt. Vor Maven habe ich mich bisher erfolgreich gedrückt, das es mir auf den ersten Blick ziemlich Kompliziert aussah.

Ich schau mal ob es irgendwo eine deutsche anleitung für Maven gibt, die ich verstehen kann.


----------



## mrBrown (28. Sep 2017)

Die Einstiegshürde fand ich persönlich leichter als bei git, grad wenn man eine IDE nutzt, die einen so ziemlich alles abnimmt - irgendwas sollte man dazu finden


----------



## MiMa (28. Sep 2017)

Habe mit Netbeans jetzt mal eine Java Maven Projekt gemacht. 
Passen Dazu schaue ich im Netbeans Wiki und bei Youtube, wede mich dann wieder melden.


----------



## MiMa (29. Sep 2017)

Das mit Maven war ja doch nicht so schwer, ein bischen Übung noch und wird gehen.
Habe meine Klassen in das neue Maven-Projekt kopiert und in den Abhängigkeiten wurden Tika und Log4j hinzugefügt. Was mich aber wundert, das er tika-app-1.11 und log4j 1.7.12 hinzugefügt hat?
Nimmt er nicht die aktuellsten Versionen?

Auch hier funktioniert das JavaDoc beim programmieren nicht?
Ich erhalte die Information:


> Entweder existiert die Javadoc-Dokumentation für dieses Objekt nicht, oder das entsprechende Javadoc wurde nicht in der Plattform- bzw. Bibliotheksverwaltung spezifiziert.


Ist Tika nicht ausreichend Dokumentiert?
Das würde ich dann ziemlich ungewöhnlich finden!

Die Roten Warnmeldungen sind weg, ist ja auch klar, wenn Tika 1.11 verwendet wird. Kann ich das beeinflussen, das die aktuellste Version verwendet werden soll?


----------



## MiMa (29. Sep 2017)

Ich denke ich habe es geschafft 
Die Lösung liegt in der pom.xml
Dort habe ich den Abschnitt der Abhängigkeiten geändert von

```
<dependencies>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-app</artifactId>
            <version>1.11</version>
            <type>jar</type>
        </dependency>
    </dependencies>
```
geänder in

```
<dependencies>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-app</artifactId>
            <version>1.16</version>
            <type>jar</type>
        </dependency>
    </dependencies>
```
Nach dem Speichern wurden jede Menge Fehler im Projekt angezeigt.
Nach der Ausführung von Maven wurden die Pakete nachgeladen und der Quellcode automatisch angepasst. Nach dem Start des Projektes gabe es keine roten Warnmeldungen von Tika mehr trotz der Version 1.16.

Die JavaDoc Dokumentation für Objekte beim Programmieren fehlt nach wie vor?
Anscheinend wurde kein Wert auf die Dokumentierung gelegt?
Vielen Dank für die Hilfe


----------



## mrBrown (29. Sep 2017)

Doch, die Doku gibts und ist auch über Maven verfügbar.
Vermutlich muss man in der IDE noch einstellen, dass JavaDoc zusätzlich geladen wird, bei Netbeans kenn ich mich da aber nicht aus


----------



## MiMa (29. Sep 2017)

Danke für den Hinweis.
Nach längeren suchen hab ich es dann auch gefunden.
Im Projekt gibt es das Verzeichnis Anhängigkeiten. 
Einen Rechtsklick darauf und es öffnet sich ein Untermenü. 
Dort den Menüpunkt JavaDoc herunterladen auswählen.
Jetzt ist es auch bei der Programmierung bei Objekten enthalten und vereinfacht vieles. 
Vielen Dank


----------

