[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orekit Users] Help with ZipJarCrawler



"Carlos M. Casas Cuadrado" <carlos.marce@gmail.com> a écrit :

Hi Luc,
Thank you very much for your support. Here's the trace you asked for:

Caused by: java.io.IOException: Stream closed
        at java.util.zip.ZipInputStream.ensureOpen(Unknown Source)
        at java.util.zip.ZipInputStream.closeEntry(Unknown Source)
        at org.orekit.data.ZipJarCrawler.feed(ZipJarCrawler.java:239)
        at org.orekit.data.ZipJarCrawler.feed(ZipJarCrawler.java:156)
        ... 12 more

The jar file has read permissions. Looking at the trace, it seems that the
input file is read up to a certain point. The problem happens when closing
an entry: at that some point in the past the ZipInputStream zip was closed
and that entry closing operation fails. I wonder why and when the stream is
closed. Could it be that, at line 205, the zip stream is closed when the
new ZipInputStream object is destroyed?

I dont't think so. This line is used only when there is a zip or jar inside another zip or jar, which does not seem to be your case.

For now, I cannot reproduce your case with the files I use. Could you try to with another jar that you would create by unpacking orekit-data.zip and repackaging it as a jar? If this works, there is probably something special with your jar. Would you mind sending me directly the faulty jar so I test it (don't do it on the list)?

best regards,
Luc

Luc


Regards,
Carlos.




On 2 June 2013 20:21, MAISONOBE Luc <luc.maisonobe@c-s.fr> wrote:

"Carlos M. Casas Cuadrado" <carlos.marce@gmail.com> a écrit :

 Hi all,


Hi Carlos,


 I'm having problems with the ZipJarCrawler data provider. I have the
following code:

DataProvidersManager.**getInstance().clearProviders()**;
DataProvidersManager.**getInstance().addProvider(new
DirectoryCrawler(myDirectory))**;

where myDirectory is a File object to my data folder, and the program
works
perfectly fine. I now insert my data folder into the project JAR file and
replace those two lines with:

DataProvidersManager.**getInstance().clearProviders()**;
DataProvidersManager.**getInstance().addProvider(new
ZipJarCrawler(myJar));

where myJar is a File object with the path to the JAR file. In this case
the program throws an IO exception with the message "Stream closed", which
is captured by an Orekit exception with the following stack trace:

org.orekit.data.ZipJarCrawler.**feed(ZipJarCrawler.java:167)
org.orekit.data.**DataProvidersManager.feed(**
DataProvidersManager.java:332)
org.orekit.frames.**RapidDataAndPredictionXMLLoade**r.fillHistory1980(**
RapidDataAndPredictionXMLLoade**r.java:110)
org.orekit.frames.**FramesFactory.**getEOP1980History(**
FramesFactory.java:284)
org.orekit.frames.**GTODProvider.<init>(**GTODProvider.java:72)
org.orekit.frames.**FramesFactory.getGTOD(**FramesFactory.java:916)
and my project files from here on.

The data files are definitely in the JAR file, under a subdirectory called
data/orekit. Since the documentation says that the search is recursive the
data provider should be able to find the data files. I'm using the Orekit
6.0 release. What am I doing wrong?


Do you also have the stacktrace for the initial IOExcetion -it should
appear after a "caused by ..." line. What I would like to know is if the
exception was thrown while executing line 147 of ZipJarCrawler (i.e. when
opening the jar itself), or at some deeper level from the list of
recursuive calls starting at line 156 of ZipJarCrawler (i.e. when parsing
the jar and reading the contained files). Also did you check the read
access properties of the jar file?

best regards,
Luc


Best regards,
Carlos.




------------------------------**------------------------------**----
This message was sent using IMP, the Internet Messaging Program.







----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.