Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/115: Рейтинг темы: голосов - 115, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506

Xdocreport - inputstream cannot be null

14.09.2015, 07:32. Показов 24290. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Кто нибудь юзал данную библиотеку? подскажите, что не так делаю?

Создал агента подключил все jar, в агенте открыл пример DocxProjectWithVelocity, запускаю и в java debug console вижу данную ошибку.


Code
1
2
3
4
5
6
7
8
9
Agent Manager: Agent error: java.io.IOException: InputStream cannot be null.
Agent Manager: Agent error: at fr.opensagres.xdocreport.core.io.XDocArchive.readZip(XDocArchive.java:289)
Agent Manager: Agent error: at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.createReport(XDocReportRegistry.java:359)
Agent Manager: Agent error: at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:326)
Agent Manager: Agent error: at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:317)
Agent Manager: Agent error: at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:302)
Agent Manager: Agent error: at DocxProjectWithVelocity.NotesMain(Unknown Source)
Agent Manager: Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
Agent Manager: Agent error: at lotus.domino.NotesThread.run(Unknown Source)

.SpoilerTarget">Спойлер: Код


Код (Java):
import lotus.domino.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import fr.opensagres.xdocreport.core.XDocReport Exception;
import fr.opensagres.xdocreport.document.IXDocR eport;
import fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry;
import fr.opensagres.xdocreport.samples.docxand velocity.model.Project;
import fr.opensagres.xdocreport.template.IConte xt;
import fr.opensagres.xdocreport.template.Templa teEngineKind;

public class DocxProjectWithVelocity extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();

try {
InputStream[/URL] in = DocxProjectWithVelocity.class.getResourc eAsStream("d:/docxandvelocity/DocxProjectWithVelocity.docx");
IXDocReport report = XDocReportRegistry.getRegistry().loadRep ort(in,TemplateEngineKind.Velocity);

// 2) Create context Java model
IContext context = report.createContext();
Project project = new Project("XDocReport");
context.put("project", project);

// 3) Generate report by merging Java model with the Docx
OutputStream[/URL] out = new FileOutputStream[/URL](new File[/URL]("d:\\docxandvelocity\\DocxProjectWithVe locity_Out.docx"));
report.process(context, out);
} catch (IOException[/URL] e) {
e.printStackTrace();
} catch (XDocReportException e) {
e.printStackTrace();
}
} catch(Exception[/URL] e) {
e.printStackTrace();
}
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2015, 07:32
Ответы с готовыми решениями:

xdocreport
решил вынести в отдельную тему... во-первых - помним про второй момент - если хочется тестить "в БД", т.е. загрузить файлы...

Блин, для ЧЕГО НУЖНА Функция CREATE TABLE invoice( inv_id INT AUTO_INCREMENT NOT NULL , usr_id INT NOT NULL , prod_id INT NOT NULL , quantity INT NOT
Погуглив, так и не смог толком понять. Есть тут ГУРУ по mysql Которые могут на пальцах или на примере показать для чего она нужна. ...

InputStream exceptions
Дано: серверный чат на TCP сокетах. Есть DataInputStream, который принимает в себя InputStream из сокета. Создаю юнит тест, делаю мок...

46
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
14.09.2015, 09:06
Здесь где-то ошибка

Code
1
 InputStream in = DocxProjectWithVelocity.class.getResourceAsStream("d:/docxandvelocity/DocxProjectWithVelocity.docx");
Не найден файл шаблона. Возможно он есть по указанному пути, но не может быть загружен методом getResourceAsStream. Попробуйте обычный файловый Stream. getResourceAsStream подразумевает загрузку из хранилища "ресурсов", а не любой файл с диска.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 09:10
Цитата Сообщение от garrick
Не найден файл шаблона. Возможно он есть по указанному пути, но не может быть загружен методом getResourceAsStream. Попробуйте обычный файловый Stream. getResourceAsStream подразумевает загрузку из хранилища "ресурсов", а не любой файл с диска.
Попробвал уже, пишет что для загрузки можно использовать только getResourceAsStream.

Код (Java):
InputStream[/URL] in = new FileInputStream[/URL](new File[/URL]("d:/DocxProjectWithVelocity.docx"));
Agent Manager: Agent error: fr.opensagres.xdocreport.core.XDocReport Exception: Impossible to create report for the input stream. The report loader supports only [] files type.
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 09:37
Цитата Сообщение от garrick
getResourceAsStream подразумевает загрузку из хранилища "ресурсов", а не любой файл с диска.
А что за хранилище ресурсов?
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
14.09.2015, 09:57
вот рабочий код


Код (Java):
import fr.opensagres.xdocreport.document.IXDocR eport;
import fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry;
import fr.opensagres.xdocreport.template.IConte xt;
import fr.opensagres.xdocreport.template.Templa teEngineKind;
import org.apache.commons.io.FilenameUtils;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.*;
import java.util.List;

/**
* Created by vintselovych on 12.08.2014.
*/
public class XDocReporter {

public XDocReporter() {

}

public String[/URL] process(String[/URL] tempalateFilePath, String[/URL] xmlFilePath) {
String[/URL] outputfilepath = "";

try {
InputStream[/URL] in = new FileInputStream[/URL](new File[/URL](tempalateFilePath));
IXDocReport report = XDocReportRegistry.getRegistry().loadRep ort(in, TemplateEngineKind.Velocity);
IContext context = report.createContext();

// create an instance of SAXParser.
SAXParser parser = SAXParserFactory.newInstance().newSAXPar ser();

// create an instance of DefaultHandler.
XMLParserViaSax parseXml = new XMLParserViaSax();

InputStream[/URL] stream = new FileInputStream[/URL](xmlFilePath);

parser.parse(stream, parseXml);

List[/URL] items = parseXml.getItems();

context.put("items", items);

stream.close();

File[/URL] inputfile = new File[/URL](tempalateFilePath);

outputfilepath = inputfile.getParent() + "\\" + FilenameUtils.getBaseName(inputfile.getA bsolutePath()) + "_out." + FilenameUtils.getExtension(inputfile.get AbsolutePath());

OutputStream[/URL] out = new FileOutputStream[/URL](new File[/URL](outputfilepath));

report.process(context, out);

if (items != null) items.clear();
} catch (Exception[/URL] e) {
e.printStackTrace();
}

return outputfilepath;
}
}



LotusScript
1
2
3
4
5
Set js = New JAVASESSION
Set xDocReporter = js.GetClass("XDocReporter")
Set xDocReporterObj = xDocReporter.CreateObject()
 
docFilePath = xDocReporterObj.process(templateFilePath, xmlFilePath)
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
14.09.2015, 10:09
в примере файл лежит в самом проекте...положи файл в ресурсы агента и вызывай как в примере. Только для работы необходимо добавить в java.policy следующие разрешения

Код (Java):
grant {
permission java.lang.RuntimePermission[/URL] "getClassLoader";
permission java.lang.RuntimePermission[/URL] "setContextClassLoader";
}
ну или если хочешь использовать файл на жестком используй другую конструкцию

Код (Java):
InputStream[/URL] in = new FileInputStream[/URL]("/tmp/template.odt");
IXDocReport report = XDocReportRegistry.getRegistry().loadRep ort(in,TemplateEngineKind.Velocity);
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 10:32
Не получается так, все равно требует через report loader:


Код (Java):
InputStream[/URL] in = new FileInputStream[/URL]("d:/docxandvelocity/DocxProjectWithVelocity.docx");
IXDocReport report = XDocReportRegistry.getRegistry().loadRep ort(in,TemplateEngineKind.Velocity);


Code
1
2
3
4
5
6
7
8
9
fr.opensagres.xdocreport.core.XDocReportException: Impossible to create report for the input stream. The report loader supports only [] files type.
at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.createReport(XDocReportRegistry.java:380)
at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.createReport(XDocReportRegistry.java:360)
at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:326)
at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:317)
at fr.opensagres.xdocreport.document.registry.XDocReportRegistry.loadReport(XDocReportRegistry.java:302)
at DocxProjectWithVelocity.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
И где можно найти java.policy?
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
14.09.2015, 10:55
..\jvm\lib\security\
можете этот пример посмотреть
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
14.09.2015, 14:16
Цитата Сообщение от dymat
А что за хранилище ресурсов?
Для Java-агента это "папочка" res внутри самого агента.


Только доставать его надо так:

Code
1
InputStream in = getClass().getClassLoader().getResourceAsStream("DocxProjectWithVelocity.docx")
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 14:18
Ага, уже догадался, все равно не хочет работать, никак(
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
14.09.2015, 14:21
1.
у меняв grant security добавлены строки


Код (Java):
permission java.awt.AWTPermission[/URL] "listenToAllAWTEvents";
permission java.lang.RuntimePermission[/URL] "setContextClassLoader";
2. может каких jarников не хватает?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
14.09.2015, 14:21
добавил пример...
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
14.09.2015, 14:24
в догонку линк
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
14.09.2015, 14:24
А чем код @oshmianski не подошел? Вроде там всё правильно.
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
14.09.2015, 14:26
вот мой список ext (много лишнего, но для сравнения):


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
commons-codec-1.5.jar
commons-collections-3.2.1.jar
commons-io-1.3.1.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.jar
docking-frames-common.jar
docking-frames-core.jar
docking-frames-ext-glass.jar
dom4j-1.6.1.jar
fr.opensagres.xdocreport.converter-1.0.4.jar
fr.opensagres.xdocreport.core-1.0.4.jar
fr.opensagres.xdocreport.document-1.0.4.jar
fr.opensagres.xdocreport.document.docx-1.0.4.jar
fr.opensagres.xdocreport.template-1.0.4.jar
fr.opensagres.xdocreport.template.velocity-1.0.4.jar
glasslib.jar
glazedlists_java15-1.9.0.jar
healthcenter.jar
ibmallext.jar
ibmcac.jar
ibmjcefips.jar
ibmjceprovyder.jar
ibmpkcs11impl.jar
IBMSecureRandom.jar
JavaDiagnosticsCollector.jar
jcalendar-1.4.jar
jgoodies-common-1.6.0.jar
jgoodies-forms-1.7.1.jar
junit-3.8.1.jar
localedata.jar
log4j-1.2.13.jar
mysql-connector-java-5.1.32-bin.jar
njempcl.jar
Notes.jar
oro-2.0.8.jar
poi-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
saxon9he.jar
stax-api-1.0.1.jar
velocity-1.7.jar
websvc.jar
xmlbeans-2.3.0.jar
xsp.http.bootstrap.jar
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 14:39
Цитата Сообщение от oshmianski
2. может каких jarников не хватает?
Вроде все как в примере, да подсветил бы редактор?




Цитата Сообщение от garrick
добавил пример...


.SpoilerTarget">Спойлер: Тоже ошибка
fr.opensagres.xdocreport.core.XDocReport Exception: Impossible to create report for the input stream. The report loader supports only [] files type.
at fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry.createReport(XDocR eportRegistry.java:380)
at fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry.createReport(XDocR eportRegistry.java:360)
at fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry.loadReport(XDocRep ortRegistry.java:326)
at fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry.loadReport(XDocRep ortRegistry.java:317)
at fr.opensagres.xdocreport.document.regist ry.XDocReportRegistry.loadReport(XDocRep ortRegistry.java:302)
at DocxProjectWithVelocity.NotesMain(Unknow n Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)




Цитата Сообщение от oshmianski
в догонку линк
Видел это, но не понял о чем там говорится в ответе, можете пояснить?




Цитата Сообщение от garrick
А чем код @oshmianski не подошел? Вроде там всё правильно.
Если загружать через FileInputStream - та же ошибка (fr.opensagres.xdocreport.core.XDocRepor tException: Impossible to create report for the input stream. The report loader supports only [] files type.)
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 812
14.09.2015, 14:42
Тоже как-то пытался эту штуку к Лотусу прикрутить, но уж больно много всего оно с собой тянет. Решил, что Apache FOP намного легче. В работе конечно, а не в разработке, т.к. FO шаблон не так просто сделать как DOCX файл. Ещё есть вариант пропускать RTF через шаблонизатор, например Velocity. Только там русские буковки ещё конвертить надо.


--- Добавлено 15 сен 2015. Первое сообщение размещено 15 сен 2015 ---




Цитата Сообщение от dymat
Видел это, но не понял о чем там говорится в ответе, можете пояснить?
Your error means that you have not XDocReport fr.opensagres.xdocreport.document.docx docx implementation JAR in your classpath.

Библиотечки не хватает.
0
0 / 0 / 0
Регистрация: 13.10.2005
Сообщений: 848
14.09.2015, 14:47
думаю ответ.

1. редактор может не подсветить
2. переложите все зависимые jarки в ext папку, а из Archive агента уберите
3. добавьте в grant соответсвующие строки
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
14.09.2015, 15:01
Если просто пытаешься пощупать данную библиотеку, то скачай примеры с их сайта и запусти в том же eclipse. Если запустятся, тогда тупым копированием переносишь в агента. Я таким способом отлаживался и я использую данную библиотеку в продакшене
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
14.09.2015, 15:38
Цитата Сообщение от oshmianski
2. переложите все зависимые jarки в ext папку, а из Archive агента уберите
Как ни странно помогло, Спасибо всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2015, 15:38
Помогаю со студенческими работами здесь

Зависает на чтении с InputStream
Приветствую. Проблема в том, что не могу получить в клиенте файл от сервера, отладка показала что функция зависает на 11 строке и никакой...

Override read in InputStream
Не получается переопределить метод в InputStream. Наследуюсь от InputStream:import java.io.IOException; import java.io.InputStream; ...

Быстродействие InputStream и OutputStream
Доброй ночи. Для работы с внешним устройством использую связь через WiFi TCP (сервер на ESP8266). При закольцовывании данных (соединяю...

InputStream Сервер/Клиент
Имеется сервер, при подключении к которому отделяется отдельный поток: while(true){ Socket socket = SS.accept(); ...

Потоки InputStream/OutputStream
Привет. Помогите разобраться с стримами. Вся абстакция классов и работа их методов как бы понятна. Но не могу понять как самому ручками...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru