danielandross
Erfahrenes Mitglied
Hallo,
da mein Projekt mit dem OO SDK geschrieben wurde braucht es 6 dateien aus dem Ordner der OpenOffice Installation (jar-files) um zu starten. DieseVerweise au die externen jars möchte ich natürlich nicht hardcoded reinmachen, weil man die ganzen hardcoded Stellen ja dann für jeden rechner modifizieren müssen (im code oder in irgendeiner property). Ich würde es aber gerne so haben, dass es zwar einen property Eintrag für das Verzeichnis gibt, den ich bei meiner distribution aber leer lasse. Dann baue ich eine überprüfung ein ob der wert für den eintrag vorhanden ist, wenn nicht soll dasOpenOffice gesucht werden und wenn gefunden gleich in die Property eintragen damit es bei dem nächsten start nicht mehr gesucht werden muss.
Ich habe jetzt 2 Probleme:
1. weiß ich nicht wie ich nach den 6 dateien automatisch suchen kann. Die plattformunabhängigkeit sollte bestehen bleiben. Als Notlösung habe ich mir jetzt eine Methode geschrieben die einen JChooser öffnet mit dem man das verzeichnis selbst wählen sollen, wie gesagt nur ne notlösung weil ich da ja unschöne Benutzerinteraktion hätte, was ich bei der installation möglichst in Grenzen halten möchte.
2. Habe ich dann noch probleme das ganze zu registrieren. Im Installation Guide des SDKs habe ich folgendes gelesen:
Wenn ich diese Verzeichnisse zB mit
einfüge dann funktioniert mein Programm auch nicht weil er seine libraries nicht findet.
Ich bitte daher um Hilfe.
Gruß
Daniel
da mein Projekt mit dem OO SDK geschrieben wurde braucht es 6 dateien aus dem Ordner der OpenOffice Installation (jar-files) um zu starten. DieseVerweise au die externen jars möchte ich natürlich nicht hardcoded reinmachen, weil man die ganzen hardcoded Stellen ja dann für jeden rechner modifizieren müssen (im code oder in irgendeiner property). Ich würde es aber gerne so haben, dass es zwar einen property Eintrag für das Verzeichnis gibt, den ich bei meiner distribution aber leer lasse. Dann baue ich eine überprüfung ein ob der wert für den eintrag vorhanden ist, wenn nicht soll dasOpenOffice gesucht werden und wenn gefunden gleich in die Property eintragen damit es bei dem nächsten start nicht mehr gesucht werden muss.
Ich habe jetzt 2 Probleme:
1. weiß ich nicht wie ich nach den 6 dateien automatisch suchen kann. Die plattformunabhängigkeit sollte bestehen bleiben. Als Notlösung habe ich mir jetzt eine Methode geschrieben die einen JChooser öffnet mit dem man das verzeichnis selbst wählen sollen, wie gesagt nur ne notlösung weil ich da ja unschöne Benutzerinteraktion hätte, was ich bei der installation möglichst in Grenzen halten möchte.
Code:
public void searchOpenOfficeInstallation(Component parent) {
JFileChooser chooser = new JFileChooser();
if (chooser.showOpenDialog(parent) == JFileChooser.APPROVE_OPTION) {
File givenDirectory = chooser.getCurrentDirectory();
if(!givenDirectory.isDirectory()){
//Fehler
System.err.println("This is not a directory.");
searchOpenOfficeInstallation(parent);//rekursive call
return;
}
File[] filesInGivenDirectory=givenDirectory.listFiles();
String[] fileNamesOfNeededOpenOfficeFiles=new String[6];
fileNamesOfNeededOpenOfficeFiles[0]="juh.jar";
fileNamesOfNeededOpenOfficeFiles[1]="jurt.jar";
fileNamesOfNeededOpenOfficeFiles[2]="officebean.jar";
fileNamesOfNeededOpenOfficeFiles[3]="ridl.jar";
fileNamesOfNeededOpenOfficeFiles[4]="unoil.jar";
fileNamesOfNeededOpenOfficeFiles[5]="unoloader.jar";
for(int i=0;i<fileNamesOfNeededOpenOfficeFiles.length;i++)
{
boolean found=false;
for(int j=0;j<filesInGivenDirectory.length;j++)
{
if(filesInGivenDirectory[j].getAbsolutePath().endsWith(fileNamesOfNeededOpenOfficeFiles[i])){
found=true;
break;
}
}
if(!found){
System.err.println("Directory is not containing the file "+fileNamesOfNeededOpenOfficeFiles[i]);
System.err.println("Please retry.");
searchOpenOfficeInstallation(parent);//rekursive call
return;
}
}
System.setProperty("OO_SDK_URE_JAVA_DIR",givenDirectory.getPath());
}
}
2. Habe ich dann noch probleme das ganze zu registrieren. Im Installation Guide des SDKs habe ich folgendes gelesen:
If you use the template batch file, edit and set the following variables:
OFFICE_HOME Path to an existing StarOffice™ or OpenOffice.org base installation, e.g. "/opt/staroffice8". Be sure that it is not a user installation only. The other should be either unset or set to an empty value.
OO_SDK_HOME Path to the SDK root directory, e.g. "/usr/local/StarOffice8_SDK"
OO_SDK_JAVA_HOME Path to a JDK root directory. The JDK is optional and only necessary if you like to run the Java examples or if you like to use the SDK environment to develop your own Java solution.
Wenn ich diese Verzeichnisse zB mit
Code:
System.setProperty("OO_SDK_URE_JAVA_DIR",givenDirectory.getPath());
Ich bitte daher um Hilfe.
Gruß
Daniel