Я сильно подозреваю, что один из следующих вещей происходит:
- Нарушение безопасности
- Неудовлетворенной Ошибка Ссылки
- Слово не установлен на сервере
- Некоторых другие ошибки загрузчика классов (редактировать)
Я пробовал с простой jsp, и применит LibraryLoader непосредственно в примерочных поймать блока:
try {
LibraryLoader.loadJacobLibrary();
ActiveXComponent oWord = new ActiveXComponent("Word.Application");
oWord.setProperty("Visible", new Variant(true));
} catch (Throwable th) {
th.printStackTrace(new java.io.PrintWriter(out));
}
и попал на неудачу, чтобы инициализировать класс JacobObject - вызвано из-за нарушения защиты от статического отладки инициализаторе: "true".equalsIgnoreCase(System.getProperty("com.jacob.debug"));
. Как только я заменил это простым присваиванием true, и заменил его на jacob.jar, я закончил с: java.lang.UnsatisfiedLinkError: no jacob-1.16-x64 in java.library.path
В этот момент все становится волосатым. Вы, вероятно, придется заменить код LibraryLoader, который заменил метод loadJacobLibrary
что-то вроде:
public static void loadJacobLibrary() {
System.load("C:/<path to .dll as known on the server>/" + getPreferredDLLName() + ".dll");
}
Который затем вызвавшей Word.Application
.
редактировать Для некоторые другие ошибки загрузчика классов, основной вопрос заключается в том, что вы можете загрузить только один экземпляр из .dll within the server - Это относится к использованию кота, но проблема аналогична со всеми другими контейнерами сервлетов - вам нужно загрузить DLL только один раз, и для обеспечения доступности кода во всех сервлетах его необходимо загрузить в загрузчик классов, который не нарушается перезагрузкой веб-приложения. Если это произойдет, вы не сможете использовать DLL, пока серверное приложение не будет перезагружено.
Ошибки, предупреждения, исключения, пример кода? Я могу успешно использовать библиотеку jacob с 32-битной и 64-битной виртуальной машиной, взаимодействующей с 32-битным COM-объектом (Word 2010 32bit). – Petesh
Нет ошибок, никаких предупреждений, ничего. – mrod
Нет ошибок, никаких предупреждений, ничего. Единственное, что я делаю: ActiveXComponent word = new ActiveXComponent («Word.Application»); word.setProperty («Видимый», новый вариант (true)); внутри файла jsp. Я также включаю com.jacob.com и com.jacob.activeX в верхней части страницы. На этом этапе я хочу только открыть окно процесса, но я вижу что-нибудь. – mrod