J'essaie de remplacer un champ dans un document OpenOffice en utilisant l'API OpenOffice Java. J'utilise la méthode insertString
:Comment trouver la véritable cause de com.sun.star.uno.RuntimeException?
xText.insertString(((XTextField) fieldMaster).getAnchor(), value.toString(), false);
Le stacktrace se présente comme suit:
[junit] com.sun.star.uno.RuntimeException:
[junit] at com.sun.star.lib.uno.environments.remote.Job.remoteUnoRequestRaisedException(Job.java:182)
[junit] at com.sun.star.lib.uno.environments.remote.Job.execute(Job.java:148)
[junit] at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:344)
[junit] at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:313)
[junit] at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:101)
[junit] at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:652)
[junit] at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:154)
[junit] at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:136)
[junit] at $Proxy14.insertString(Unknown Source)
...
Si j'interprète cela correctement, il me dit qu'il connecté à un autre proces de Java, quelque chose dans le D'autres processus ont échoué, mais cela ne me dit pas quel est le problème.
J'ai trouvé qu'il y a quelques variables d'environnement (PROT_REMOTE ...) qui me permettraient de journaliser les messages de ces processus distants (processus différent, même ordinateur, btw), mais seulement si je lance une version OpenOffice avec débogage activé? J'utilise une version OpenOffice d'un dépôt Deb sur Ubuntu, et je dois m'intéresser à compiler ma propre version d'OpenOffice.
Y a-t-il un moyen d'obtenir des messages d'erreur utiles du processus distant pour m'aider à comprendre pourquoi mon code échoue?
Y a-t-il d'autres sections de trace de pile en dessous de celle-ci? –
non, c'est le problème. Je pense que l'application java se connecte aux exécutables ooo (processus différent), en utilisant tcp ou quelque chose de similaire. L'autre processus a un problème, mais cela n'est pas communiqué correctement par le côté Java. – Andrej
Quoi qu'il en soit, je pense que le problème est causé par le fait que j'essaie de remplacer un champ de texte dans un en-tête en utilisant insertString. Tous les autres appels insertString fonctionnent comme prévu. Seuls les champs d'en-tête lancent des exceptions. Je ne sais pas pourquoi, cependant. – Andrej