Seems to me the .jar files are not loaded/found, maybe compile geotools with 
the dx tool? I don't think the .jar files are added in the build?? Some wild 
guessess.....

Roy
  _____  

From: Rémi Belzanti [mailto:[email protected]]
To: Jody Garnett [mailto:[email protected]]
Cc: [email protected]
Sent: Mon, 18 Apr 2011 11:19:02 +0200
Subject: Re: [Geotools-gt2-users] GeoTools 2 and Android applications

Hi,

I wasn't aware that GeoTools uses the Java "SPI" nor what SPI   means. I found 
information about SPI and i'm not really sure that the   Android platform can 
handle that (for example, the package   javax.security is handled by Android 
but javax.security.auth.spi is   not). I'm looking for more information about 
that.
  
By the way, i've found information that may be useful :
Android uses the Dalvik virtual machine. The architecture of this VM is a 
registry, not a stack one like the Java VM.
Applications   developed for Android must be compiled in Dalvik executables 
(.dex)   with the dx tool. It compiles .java and .class and then convert .class 
in .dex. So the .dex file is the equivalent to .jar but for   Android. Thus, 
the Dalvik Bytecode is different from the Java Bytecode.
  
So i guess when i import .jar files into my Android project, they are turned 
into .dex files (or i'm wrong somehow ?).
Moreover, the Dalvik VM doesn't use JIT compilation.

So this may explain why i have deferences between a compilation on a Java 
classic project that uses GeoTools and an Android one.
    
Now about what "doesn't work" means to me :

I have errors while using the application i created with GeoTools attributes, 
but not while typing the code.
Here is an example of a code that seems correct, but throws me an error while 
using the application :
    


Map<String, Serializable> pParams = new HashMap<String, Serializable>();
  
DataStore pDS = null;
try {
     pParams.put("ServeurPrincipal", new URI(endPoint));
     pDS = DataStoreFinder.getDataStore(pParams); // <-- Error here
} catch (URISyntaxException e) {
     e.printStackTrace();
  
} catch (IOException e) {
     e.printStackTrace();
}
The error is :

ERROR/AndroidRuntime(262): java.lang.
NoClassDefFoundError: org.geotools.data.wfs.WFSDataStoreFactory         

Some explanation about the code:
I want to get data from a WFS server that can be reach through the "endPoint" 
URL (String).
Before i can iterate the data, i have an exception on the getDataStore function.
    The endPoint URL is something like 
"http://privateServer/arcgis/services/monPortail/prototype_mobile/MapServer/WFSServer?TYPENAME=monPortail&request=getFeature&service=WFS&version=1.1.0";
    
At this point, i included in the project those .jar files :
- gt-api
  - gt-data
  - gt-epsg-hsql
  - gt-main
  - gt-opengis
  - gt-wfs
  - gt-xml

I am not able to add every .jar files listed in the   geotools-2.7.0.1-bin.zip 
file because when i'm doing that, i have a Heap   space error although   i run 
Eclipse this way : C:\eclipse\eclipse.exe -vmargs -Xms512m   -Xmx1024m 
-XX:PermSize=128m -XX:MaxPermSize=256m _nl fr_FR
  
Another example with another error :



Map connectionParameters = new HashMap();
  
connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", endPoint);
DataStore data = null;
// Step 2 - connection
try {
    data = DataStoreFinder.getDataStore( connectionParameters ); // <-- Error 
here
  
} catch (IOException e) {
    e.printStackTrace();
}
Returned error : ERROR/AndroidRuntime(313): Caused by: 
java.lang.NoClassDefFoundError: org.geotools.util.logging.Logging         

Another one :


Map params = new HashMap();
    params.put(WFSDataStoreFactory.URL.key, endPoint); // <-- Error here    
Here, endPoint is an URL type variable.
The error reported is : ERROR/AndroidRuntime(364): 
java.lang.NoClassDefFoundError: org.geotools.data.wfs.WFSDataStoreFactory       
  

Finally, the last test :



WFSDataStoreFactory f = new WFSDataStoreFactory(); // <-- Error here
  

Returns : ERROR/AndroidRuntime(417): java.lang.NoClassDefFoundError: 
org.geotools.data.wfs.WFSDataStoreFactory
So far, i use just a selection of .jar files. When i try to import more .jar 
files, i have a heap space error (eclipse.exe uses about 1150Mo of RAM), with 
many messages like this in the console :
  
2011-04-18 10:52:43 - CRLRmap] Dx warning: Ignoring InnerClasses attribute for 
an anonymous inner class
(com.ibm.icu.text.BreakIteratorFactory$1RBBreakIteratorFactory) that doesn't 
come with an
associated EnclosingMethod attribute. This class was probably produced by a
  compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
  this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.

For now i don't know what to do with this indication.

I hope i gave you enough to have a clue about what is possible to do to use 
GeoTools correctly with Android.
  
If you need any additional information or want me to test some procedures, 
please let me know so i can perform tests or improvements about my use of 
GeoTools.

Regards,

Rémi Belzanti
[email protected]
  

2011/4/16 Jody Garnett <[email protected]>
  
              
                  I am not aware of the limits of the andriod platform; you are 
aware that GeoTools uses the Java "SPI" system to write up each jar (so they 
can find the factories provided by the plugins). Does this mechanism work on 
Andriod?  


You will need to provide some more details on what "doesn't work" means?
                                    
-- 
Jody Garnett




                                                      

On Saturday, 16 April 2011 at 4:53 PM, Rémi Belzanti wrote:                     
                   




Hi,


I'm looking for information about how to use GeoTools with Android system. I'm 
not sure this is here i can ask questions about that, so don't hesitate to 
redirect me to an appropriate place.    


I am using Eclipse on Windows XP. I downloaded the GeoTools 2 zip file and 
started to add some .jar files to my project.
The particularity of my project is that this is an Android one.  
  

I am developing an Android application that would allow me to show on a map 
(google map) some features (points but not only) so i tried to use GeoTools to 
do that (concretely, my goal is to display features given to my by a WFS 
server).    


Today, with the version 2.7.0.1, it appears that GeoTools doesn't work with an 
Android project. To have the capacity of creating an Android project in 
Eclipse, you have to download and install the Android SDK package.    
First i thought i was wrong with the add of .jar files or something, but when i 
create a new "classic" java project, it appears that i can use GeoTools 
efficiently.


So my question is, is there any Android version of GeoTools or is there any 
particular configuration that i need to do to use GeoTools within Android 
applications ?    


I can give you more information about the error messages i have in return of a 
code that works on "classic" java project, and about all i've tried to do with 
the configuration or add of .jar files.    


Thanks in advance.


Best regards,


Remi
zepi30gmail.com  
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
  priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
  
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
                                                                                
                                                
                      
                                          
    
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload 
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve 
application availability and disaster protection. Learn more about boosting 
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to