Всичко,
Не съм много сигурен дали това е проблем на BIRT/Eclipse SDK/разработчик...
Ние сме в процес на разглеждане на BIRT за Eclipse SDK (Indigo). Ние инвестирахме в книгата Integrating and Extending BIRT от Jason Weathersby et al. Той ви превежда през процеса на създаване на вашия първи драйвер за ODA, който по същество представлява 2 проекта за добавки: драйвер за ODA и потребителски интерфейс на драйвер за ODA. За съжаление никога не се говори за отстраняване на грешки в подробности.
Идеята е ODA драйверът да се свързва с нашето приложение, за да извлича данните. Добавих външна JAR справка за JAR файла на нашите приложения към проекта ODA Driver от Properties->Java Build Path. Това се появява под Reference Libraries в работното пространство на Eclipse. Всички референтни JAR файлове, които нашето приложение използва, също се показват под референтните библиотеки.
Тъй като нещата не работят, което ще обясня скоро, създадох също HelloWorldX Java проект в работното пространство на Eclipse SDK, който има един клас, наречен HelloThere, с един статичен метод, който е:
public static String getIt()
{
return "Ding Dong";
}
Добавих това като препратка към проекта на ODA Driver от Properties->Java Build Path.
И така, това, което направих...
Създаване на проекти
Създадох 2 проекта в моята IDE на Eclipse SDK. ODA драйверът съдържа препратка към JAR файла на нашето наследено приложение, който извикваме в код.
Това вече също извиква проекта HelloWorldX.
Започнете сесия за отстраняване на грешки
Добавих точка на прекъсване в Connection#open. Тази точка на прекъсване е на първия ред.
Стартирам сесията за отстраняване на грешки, като щракна върху елемента от лентата с инструменти за отстраняване на грешки. Първият път, когато ме подкани, избрах изпълнение като Eclipse Application. Това задейства нова сесия на Eclipse SDK, която мога да заредя файла на дизайнера на отчети от File->Open...
Докладът се зарежда в IDE на Eclipse SDK, както следва:
Създавам нов източник на данни, като щраквам с десния бутон върху Източници на данни и избирам Нов източник на данни. От диалоговия прозорец Нов източник на данни избирам името на моя ODA драйвер и щраквам върху Напред. Това показва диалогов прозорец с бутон Тестване на връзката.
Щраквам върху бутона Test Connection, който достига точката на прекъсване в Connection#open.
Когато прекрача следния код, получавам NoClassDefFoundError.
System.out.println(HelloThere.getIt());
Изключението също се хвърля, когато направя повикване към който и да е от наследените ни кодове във външния JAR файл, който споменах. Eclipse показва прозорец в работното пространство за ред OdaConnection.open(Properties): 267, който има Източник не е намерен и бутон с Редактиране на пътя за търсене на източник... Опитах различни комбинации за задаване на пътя на източника за нашето приложение. Щракването върху бутона ще изведе следния диалогов прозорец:
Накратко проследяването на стека е както следва:
org.eclipse.datatools.connectivity.oda.OdaException ;
java.lang.NoClassDefFoundError: HelloWorld/HelloThere
at org.eclipse.datatools.connectivity.oda.profile.OdaConnectionWrapper.open(OdaConnectionWrapper.java:215)
at org.eclipse.datatools.connectivity.oda.profile.OdaConnectionWrapper.<init>(OdaConnectionWrapper.java:59)
... (some trace omitted as big!)
Caused by: java.lang.ClassNotFoundException: HelloWorld.HelloThere
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 49 more
Аз съм нов в Eclipse, така че, моля, бъдете нежни. Може ли някой да ми каже къде да търся или друга информация, която трябва да публикувам. Може да правя нещата напълно погрешно, но със сигурност не съм първият човек, който би искал да отстранява грешки в BIRT ODA драйвер. Прегледах целия интернет, за да намеря решение за това. Единствената публикация, която намерих за подходяща, беше във форумите на Eclipse, които така и не получиха отговор през 2007 г.!!! Вижте форумите на общността на Eclipse
РЕДАКТИРАНЕ
Поставих някакъв код за извеждане на classpath от моя ODA драйвер с помощта на System.getProperty("java.class.path",".");
D:\Software\Eclipse\eclipse-SDK-3.7-win32\eclipse\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar
КРАЙ НА РЕДАКТИРАНЕ
Благодаря
Андез