Lotus и xls

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#1
Всем привет!
вот пытаюсь адаптировать код под агент.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код (для истории)</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import java.sql.*;

public class DemoDriver {
public static void main(String[] args) {
try {
// load the driver into memory
Class.forName("org.aarboard.jdbc.xls.XlsDriver");

// create a connection. The first command line parameter is assumed to
// be the directory in which the .xls files are held
Connection conn = DriverManager.getConnection("jdbc:aarboard:xls:" + args[0]);

// create a Statement object to execute the query with
Statement stmt = conn.createStatement();

// Select the columns from sample.xls
ResultSet results = stmt.executeQuery("SELECT * FROM sample");

// dump out the results
while (results.next()) {
System.out.println("ID= " + results.getString("ID") + " NAME= " + results.getString("NAME"));
}

// clean up
results.close();
stmt.close();
conn.close();
}
catch (Exception e) {
System.out.println("Oops-> " + e);
}
}
}[/CODE]Но вот как-то не получается... в итоге получаю такую ошибку:
Код:
05/15/2012 14:26:23  Agent error: java.lang.ClassNotFoundException: org.aarboard.jdbc.xls.XlsDriver
05/15/2012 14:26:23  Agent error: at lotus.domino.AgentLoader.loadClass(Unknown Source)
05/15/2012 14:26:23  Agent error: at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
05/15/2012 14:26:23  Agent error: at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
05/15/2012 14:26:23  Agent error: at java.lang.Class.forName0(Native Method)
05/15/2012 14:26:23  Agent error: at java.lang.Class.forName(Class.java:120)
05/15/2012 14:26:23  Agent error: at JavaAgent.NotesMain(Unknown Source)
05/15/2012 14:26:23  Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
05/15/2012 14:26:23  Agent error: at lotus.domino.NotesThread.run(NotesThread.java:249)
Как решить вопрос?
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#2
класс нот фаунд - это когда его не нашла жвм :)
если не секрет - зачем залезать в хехель, через опуОДБЦ?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#5
Видел это... но мозгов не хватило включить все это :)
С Java вообще опыта нет :(

Если бы кто показал-рассказал.... пример бы посмотреть

Хотя не совсем удобный способ доступа... ни отсортировать толком, ни фильтр установить... SELECT мне кажется удобней
 

Zeka

Well-known member
01.09.2009
219
0
#7
на пальцах:
java.lang.ClassNotFoundException: org.aarboard.jdbc.xls.XlsDriver - значит, что ява не нашла нужный класс XlsDriver.
Он находится в JAR xlsjdbc-1.6.jar.
Что бы заработало - положи этот jar в папку *lotus*\jvm\lib\ext и перезагрузись.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#8
на пальцах:
java.lang.ClassNotFoundException: org.aarboard.jdbc.xls.XlsDriver - значит, что ява не нашла нужный класс XlsDriver.
Он находится в JAR xlsjdbc-1.6.jar.
Что бы заработало - положи этот jar в папку *lotus*\jvm\lib\ext и перезагрузись.
Добавил... получил другую ошибку...

Agent error: java.lang.UnsupportedClassVersionError: Unsupported major.minor version 48.0

похоже это уже проблема с POI
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#9
это версия жвм - надо брать сборку под соответ версию
вероятно запуск осущ. на жвм 1.4 (7-ая домина) а сборка под 1.5+
судя по названиям - надо эту http://sourceforge.net/projects/xlsjdbc/fi...JE%201.4%20api/
возможно править и пересобирать позднии версии (из сорцов), но полагаю, в данном случае - не вариант
для POI - таже история, последняя версия JDK 1.5 or higher
JDK Version. POI 3.5 and later requires the JDK version 1.5 or later. Versions prior to 3.5 require JDK 1.4+
слово jdk означает требование при сборке, но оно и даёт результат (обычно) - jre 1.5+ (т.е. рантайм д.б. не ниже)

старые либы могут давать свои особенности, ябы не советовал... варианты выхода:
-не использовать этот подход
-поднять версию домины
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#10
это версия жвм - надо брать сборку под соответ версию
вероятно запуск осущ. на жвм 1.4 (7-ая домина) а сборка под 1.5+
судя по названиям - надо эту http://sourceforge.net/projects/xlsjdbc/fi...JE%201.4%20api/
возможно править и пересобирать позднии версии (из сорцов), но полагаю, в данном случае - не вариант
для POI - таже история, последняя версия JDK 1.5 or higher

слово jdk означает требование при сборке, но оно и даёт результат (обычно) - jre 1.5+ (т.е. рантайм д.б. не ниже)

старые либы могут давать свои особенности, ябы не советовал... варианты выхода:
-не использовать этот подход
-поднять версию домины
Ну с версиями вроде бы разобрался... но получил новые ошибки после этого
C++:
// Select the columns from sample.xls
ResultSet results = stmt.executeQuery("SELECT * FROM book");
book - название xls-файла

Код:
05/17/2012 09:51:43  Agent error: java.lang.ArrayIndexOutOfBoundsException
05/17/2012 09:51:43  Agent error: at org.aarboard.jdbc.xls.XlsResultSet.<init>(XlsResultSet.java:57)
05/17/2012 09:51:43  Agent error: at org.aarboard.jdbc.xls.XlsStatement.executeQuery(XlsStatement.java:347)
05/17/2012 09:51:43  Agent error: at ClassJDBC.xlsCn(Unknown Source)
05/17/2012 09:51:43  Agent error: at JavaAgent.NotesMain(Unknown Source)
05/17/2012 09:51:43  Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
05/17/2012 09:51:43  Agent error: at lotus.domino.NotesThread.run(NotesThread.java:249)
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#11
ArrayIndexOutOfBoundsException - разве ниочём не говорит ;)
а как разобрались с версиями - домину подняли?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#12
ArrayIndexOutOfBoundsException - разве ниочём не говорит ;)
я конечно догадываюсь, но хотелось бы уточнить... ;)
Похоже на ошибку доступа к несуществующему элементу массива... но не понятно откуда?... я вроде бы нигде к массивам не обращаюсь
Я так понимаю это где-то внутри библиотеки POI.

а как разобрались с версиями - домину подняли?
Нарыл jar под свою версию. ^_^ Точнее то что перестало ругаться на версию ;)

А вообще.. я и java... как в анекдоте... "милиционеры делятся на сильных и умных" :)
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#13
про версии jar я сразу предупредил - и предложил отказаться от этой идеи
собсно имеем подтверждение моих опасений
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#14
ЕСТЬ! получилось!
Проблема собственно в интерпретации "*" в SELECT... кто бы мог подумать что это понимается как имя поля, а не все поля.
В общем пришлось перечислять все поля.
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#15
ЕСТЬ! получилось!
Проблема собственно в интерпретации "*" в SELECT... кто бы мог подумать что это понимается как имя поля, а не все поля.
В общем пришлось перечислять все поля.
ну вот и славно, а по селекту, судя из кода по первой ссылке - в 1.6 эта фича изменена ;) (о чём и говорил)

Добавлено: насколлько помню, в старых версиях POI эксель обрабатывается в памяти...
что означает получение аутофмемори на "больших" файлах ^_^
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#16
ну вот и славно, а по селекту, судя из кода по первой ссылке - в 1.6 эта фича изменена ;) (о чём и говорил)

Добавлено: насколлько помню, в старых версиях POI эксель обрабатывается в памяти...
что означает получение аутофмемори на "больших" файлах :)
Посмотрим ;) приедет файл - буду смотреть ^_^
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#17
ну вот и славно, а по селекту, судя из кода по первой ссылке - в 1.6 эта фича изменена ^_^ (о чём и говорил)

Добавлено: насколлько помню, в старых версиях POI эксель обрабатывается в памяти...
что означает получение аутофмемори на "больших" файлах ;)
Кстати... POI работает самый новый... ;)
Так что понизил версию только драйвера.