[gdal-dev] JRE vs JDK

2012-10-26 Thread Ivan Lucena
Hi there,

I am getting this exception when loading gdal.jar:

*
Native library load failed.
java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.HasThreadSupport()I
*

If I change the script that launch my application to use the "java.exe" from 
the JDK instead of the JRE then the problem is gone. The problem is that users 
usually have only JRE. Right?

Anyway, It doesn't seems like there is nothing wrong with the GDAL built. I 
also try the same test with Tamas' binaries but got the same strange error.

An by looking at swig/include/java/*.i I can see that some of the loadLibrary 
would issue that message before the exception.

"WARNING : GDAL should be compiled with thread support for safe execution in 
Java."

But I am not getting it. So the error must be coming from loading 
"gdalconstjni.dll" or "osrjni.dll" but not "gdaljni.dll" or "ogrjni.dll"

I haven't tried that with Linux but I will.

I search for "java.lang.UnsatisfiedLinkError: 
org.gdal.gdal.gdalJNI.HasThreadSupport()I" on the web there are a hand full of 
question about that but none of the suggestions mentioned the JRE vs JDK issue.

Does anybody has a clue?

Regards,

Ivan
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] JRE vs JDK

2012-10-26 Thread Even Rouault
Le vendredi 26 octobre 2012 17:52:18, Ivan Lucena a écrit :
> Hi there,
> 
> I am getting this exception when loading gdal.jar:
> 
> *
> Native library load failed.
> java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.HasThreadSupport()I
> *
> 
> If I change the script that launch my application to use the "java.exe"
> from the JDK instead of the JRE then the problem is gone. The problem is
> that users usually have only JRE. Right?
> 
> Anyway, It doesn't seems like there is nothing wrong with the GDAL built. I
> also try the same test with Tamas' binaries but got the same strange
> error.
> 
> An by looking at swig/include/java/*.i I can see that some of the
> loadLibrary would issue that message before the exception.
> 
> "WARNING : GDAL should be compiled with thread support for safe execution
> in Java."
> 
> But I am not getting it. So the error must be coming from loading
> "gdalconstjni.dll" or "osrjni.dll" but not "gdaljni.dll" or "ogrjni.dll"
> 
> I haven't tried that with Linux but I will.
> 
> I search for "java.lang.UnsatisfiedLinkError:
> org.gdal.gdal.gdalJNI.HasThreadSupport()I" on the web there are a hand
> full of question about that but none of the suggestions mentioned the JRE
> vs JDK issue.
> 
> Does anybody has a clue?

I'm a bit skeptical about this being a JRE vs JDK issue. I suspect that you 
have an issue with the supporting dll (the 4 jni ones and gdalXXX.dll and its 
dependencies) not being found in the PATH.

I've just tried with an older release-1500-dev.zip from Tamas site and a JRE. 

I put gdalinfo.class (compiled from the samples in swig/java/apps) in C:
\release-1500-dev\release-1500\bin\gdal\java

And then, after calling SDKShell.bat, just run from there :

C:\release-1500-dev\release-1500\bin\gdal\java>java -cp gdal.jar;. gdalinfo

Seems to work.

Regards,

Even
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev


Re: [gdal-dev] JRE vs JDK

2012-10-26 Thread Ivan Lucena
Hi Even,

>  ---Original Message---
>  From: Even Rouault 
>  To: gdal-dev@lists.osgeo.org, Ivan Lucena 
>  Subject: Re: [gdal-dev] JRE vs JDK
>  Sent: Oct 26 '12 13:26
>  
>  Le vendredi 26 octobre 2012 17:52:18, Ivan Lucena a écrit :
>  > Hi there,
>  >
>  > I am getting this exception when loading gdal.jar:
>  >
>  > *
>  > Native library load failed.
>  > java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.HasThreadSupport()I
>  > *
>  >
>  > If I change the script that launch my application to use the "java.exe"
>  > from the JDK instead of the JRE then the problem is gone. The problem is
>  > that users usually have only JRE. Right?
>  >
>  > Anyway, It doesn't seems like there is nothing wrong with the GDAL built. I
>  > also try the same test with Tamas' binaries but got the same strange
>  > error.
>  >
>  > An by looking at swig/include/java/*.i I can see that some of the
>  > loadLibrary would issue that message before the exception.
>  >
>  > "WARNING : GDAL should be compiled with thread support for safe execution
>  > in Java."
>  >
>  > But I am not getting it. So the error must be coming from loading
>  > "gdalconstjni.dll" or "osrjni.dll" but not "gdaljni.dll" or "ogrjni.dll"
>  >
>  > I haven't tried that with Linux but I will.
>  >
>  > I search for "java.lang.UnsatisfiedLinkError:
>  > org.gdal.gdal.gdalJNI.HasThreadSupport()I" on the web there are a hand
>  > full of question about that but none of the suggestions mentioned the JRE
>  > vs JDK issue.
>  >
>  > Does anybody has a clue?
>  
>  I'm a bit skeptical about this being a JRE vs JDK issue. I suspect that you
>  have an issue with the supporting dll (the 4 jni ones and gdalXXX.dll and its
>  dependencies) not being found in the PATH.

You are right. But if one of the GDAL/OGR JNI DLL was missing, the message 
would be something like:

java.lang.UnsatisfiedLinkError: no gdaljni in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI
.AllRegister()V
at org.gdal.gdal.gdalJNI.AllRegister(Native Method)
at org.gdal.gdal.gdal.AllRegister(gdal.java:475)

The problem seems to be the dependencies. Looking at he Process Monitor I can 
see that there is a lot of confusion going on between 64 and 32 bits versions 
of third level DLLs (GDAL -> plugin -> SDK-X -> etc. -> etc.). 

It is a Windows 7 64 bits machine.

All I need to do is to complete isolate the PATH on my script from whatever is 
on the system PATH by *not* using %PATH% at all. Not either before or *after* 
the paths I need! Yes, not even after. That WOW64 is very strange.

>  
>  I've just tried with an older release-1500-dev.zip from Tamas site and a JRE.
>  
>  I put gdalinfo.class (compiled from the samples in swig/java/apps) in C:
>  \release-1500-dev\release-1500\bin\gdal\java
>  
>  And then, after calling SDKShell.bat, just run from there :
>  
>  C:\release-1500-dev\release-1500\bin\gdal\java>java -cp gdal.jar;. gdalinfo
>  
>  Seems to work.

Thank you so very much for doing that test.

Best regards,

Ivan
___
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev