On old version of the api code hides the fact it fails to load the file:
public LookupService(String databaseFile, int options){
try {
this.file = new FileStream(databaseFile, FileMode.Open, FileAccess.Read);
dboptions = options;
init();
} catch(System.SystemException) {
Console.Write("cannot open file " + databaseFile + "\n");
}
}
Each method call then checks if this.file has been set an raises the exception you are seeing
public Country getCountry(long ipAddress){
if (file == null) {
//throw new IllegalStateException("Database has been closed.");
throw new Exception("Database has been closed.");
}