[jsword-devel] Clean Installation Problems
DM Smith
jsword-devel@crosswire.org
Wed, 03 Mar 2004 10:24:15 -0500
I am looking at getting JSword to work well from a clean installation. That
is, Sword (C++) has not been installed (or it has been installed to a
non-default location) and JSword is installed "for the first time". To
simulate this, I delete all traces of modules and ~/.jsword then run it
either in Eclipse or via webstart (a local, hand edited jnlp file).
The problem I have encountered is multi-faceted, but it seems to manifest
itself in three ways.
1) JSword assumes that at least one bible is installed. If one is not
installed then the application does not work gracefully. Specifically I get
all kinds of un-helpful error messages, with Null Pointer Exceptions and
Book Exceptions. (I have a listing of where these errors occurred, if anyone
wants them, but for the sake of brevity in this message, I left them out.)
2) JSword assumes that Sword is installed. It checks for modules installed
in the Sword Module directory in one and only one place. If the program is
not installed there then JSword defaults to putting modules in the root of
the current drive. For me this is d:\modules and d:\mods.d. On unix, I would
guess that it would fail on superuser permission problems. However, it does
not look there to see if modules are installed.
3) JSword uses resource/version/ser directory to look for installed bibles
using the Ser driver. However, when it serializes them it puts them in
~/.jsword/sword-[INITIALS]. The problem with looking at resource/version/ser
is that in a webstart setting this is inside resource.jar. The driver does
correctly use the ref.data and ref.index on a subsequent run.
The net effect of the last two problems is that restarting the application
after downloading/installing bibles, they don't show up as having been
installed. I have not looked at the Lucene driver to see if it has similar
assumptions.
I would like to know what the consensus on fixing these problems is.
I would suggest that on first run (every run??) that it verifies the
run-time environment for its assumptions and if it assumed correctly, then
the program continues as it has. If it has not then it supplies a coherent
set of defaults and perhaps presents the user with a "Wizard" to modify
them.
Should the "ser" files be stored on a per user basis (i.e. in ~/.jsword/...)
or in a common area?
At this point should there be any concurrency concerns? Or do we assume that
modules and ser files may be shared but not networked (that is the file
system is on drives on the local machine)?
As I have some time on my hands, I will be glad to do the implementation.
_________________________________________________________________
Get business advice and resources to improve your work life, from bCentral.
http://special.msn.com/bcentral/loudclear.armx