2016-04-19 17 views
0

Ich versuche, die Geotools Java-Bibliothek in einem Projekt von mir ein I 14,3 mit Gradle und Version gebaut zu verwenden:Kann instanziieren nicht Ressourcensystem java.lang.NoClassDefFoundError Koordinate: org.geotools.factory.Hints

compile 'org.geotools:gt-shapefile:14.3' 
compile 'org.geotools:gt-epsg-hsql:14.3' 

Grundsätzlich kann jedes Mal, wenn ich versuchen, eine CoordinateResourceSystem, wie zu instanziiert:

java.lang.NoClassDefFoundError: org.geotools.factory.Hints 
at org.geotools.referencing.CRS.<clinit>(CRS.java:181) 
:

CoordinateReferenceSystem crs; 
try { 
    crs = CRS.decode("epsg:4326"); //also tried DefaultGeographicCRS.WGS84_3D 
} catch (FactoryException e) { 
    e.printStackTrace(); 
} 

ich zur Laufzeit erhalten Sie diesen Fehler

Alle Ratschläge, die ich bis jetzt erhalten habe, hatten mit der Aktivierung von Multidex zu tun, und ich habe jede einzelne Kombination von Großbuchstaben verordnet, aber ohne Erfolg. Auch versucht, dutzende Male zu säubern und zu bauen. Egal, was ich mache, bekomme ich diesen lästigen Fehler zur Laufzeit. Irgendwelche Gedanken darüber, warum das sein könnte? Ich kann die Klasse im Glas sehen.

Ich habe festgestellt, dass diese Abhängigkeit mehrere Gläser importiert, alle mit ähnlichen Paketnamen. Könnten diese Paketnamen für Verwirrung sorgen?

Wirklich ratlos hier und ich kann nicht mit meinem Projekt fortfahren, bis ich herausgefunden habe, wie man diesen Code richtig implementiert.

EDIT

Hier ist meine logcat. Es zeigt sich, dass es eine Art Problem gibt, wie ART mit einigen der geotools-Klassen, einschließlich der culrpit Hints-Klasse, umgeht.

04-20 22:41:55.308 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.referencing.factory.ReferencingFactory> 
04-20 22:41:55.311 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.311 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints$Key> 
04-20 22:41:55.319 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.324 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.referencing.DefaultAuthorityFactory> 
04-20 22:41:55.324 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.referencing.DefaultAuthorityFactory> 
04-20 22:41:55.325 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.326 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints$Key> 
04-20 22:41:55.326 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints$Key> 
04-20 22:41:55.329 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.329 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.referencing.factory.AbstractAuthorityFactory> 
04-20 22:41:55.330 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.referencing.factory.AbstractAuthorityFactory> 
04-20 22:41:55.330 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.339 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.geometry.DirectPosition2D> 
04-20 22:41:55.341 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.342 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints$Key> 
04-20 22:41:55.355 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.357 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.358 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.359 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.360 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.361 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.362 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.363 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.363 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.364 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.365 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.366 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.367 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.368 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.371 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.372 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.374 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.375 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.376 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.376 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.377 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.378 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.378 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.379 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.379 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.383 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.384 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.384 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.389 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderableOp> 
04-20 22:41:55.402 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.406 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderedOp> 
04-20 22:41:55.406 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.PlanarImage> 
04-20 22:41:55.408 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderableOp> 
04-20 22:41:55.409 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderableOp> 
04-20 22:41:55.410 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.RenderableOp> 
04-20 22:41:55.414 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<javax.media.jai.JAI$RenderingKey> 
04-20 22:41:55.414 5089-5089/com.myproject I/art: Rejecting re-init on previously-failed class java.lang.Class<org.geotools.factory.Hints> 
04-20 22:41:55.414 5089-5089/com.myproject D/AndroidRuntime: Shutting down VM 
04-20 22:41:55.415 5089-5089/com.myproject E/AndroidRuntime: FATAL EXCEPTION: main 
                           Process: com.myproject, PID: 5089 
                           java.lang.NoClassDefFoundError: org.geotools.factory.Hints 
                            at org.geotools.referencing.CRS.<clinit>(CRS.java:181) 
                            at com.myproject.MotionTrackingActivity.onCreate(MotionTrackingActivity.java:122) 
                            at android.app.Activity.performCreate(Activity.java:5231) 
                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2160) 
                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2246) 
                            at android.app.ActivityThread.access$800(ActivityThread.java:136) 
                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1197) 
                            at android.os.Handler.dispatchMessage(Handler.java:102) 
                            at android.os.Looper.loop(Looper.java:136) 
                            at android.app.ActivityThread.main(ActivityThread.java:5030) 
                            at java.lang.reflect.Method.invoke(Native Method) 
                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 

Antwort

0

Die „übliche Weise“ GeoTools Referenzierung zu brechen ist nicht eine EPSG Fabrik schließen oder die mehr als eine. Von deiner Frage kann ich nicht sagen, welches dein Problem ist. Wie in der FAQ beschrieben, benötigen Sie eines der epsg Gläser, in der Regel gt-epsg-hsql.

Ihre Frage ist Android markiert und es gibt some known issues mit dem SPI-basierten Factory-Finder-System, das GeoTools verwendet, aber ich denke nicht, dass dieses Problem sein sollte.

+0

enthalten die Abhängigkeit gt-epsg-hsql. immer noch den gleichen Fehler :(irgendwelche anderen Ideen, was könnte dies verursachen? Könnte nur versuchen, eine andere Bibliothek, so wäre auch offen für Vorschläge für Bibliotheken, die sicher mit Android arbeiten. Danke für die Antwort ... – ethan123

+0

oben bearbeitet, um aufzunehmen logcat – ethan123

+0

Ian, hast du jemals eine Lösung dafür gefunden? Ich habe das gleiche Problem. –