Отладка драйвера OIR BIRT в Eclipse SDK - NoClassDefFoundError - PullRequest
1 голос
/ 20 июля 2011

Все,

Я не слишком уверен, если это проблема BIRT / Eclipse SDK / Developer ...

Мы находимся в процессе изучения BIRT для Eclipse SDK (Indigo).Мы инвестировали в книгу Jason Weathersby et al.Он проведет вас через процесс создания вашего первого драйвера ODA, который по сути представляет собой 2 подключаемых модуля: драйвер ODA и пользовательский интерфейс драйвера ODA.К сожалению, в нем никогда не говорится об отладке.

Идея состоит в том, чтобы драйвер ODA взаимодействовал с нашим приложением для получения данных.Я добавил и ссылку External JAR для файла JAR наших приложений в проект драйвера ODA из Properties-> Java Build Path.Это отображается в разделе «Библиотеки со ссылками» в рабочей области Eclipse.Все ссылочные JAR-файлы, используемые нашим приложением, также отображаются в ссылочных библиотеках.

Поскольку все не работает, о чем я вскоре расскажу, я также создал Java-проект HelloWorldX в рабочей области Eclipse SDK, который имеетодин класс с именем HelloThere с единственным статическим методом, который:

public static String getIt() 
{
    return "Ding Dong";
}

Я добавил это как ссылку на проект к драйверу ODA из Properties-> Java Build Path.

Так чтоЯ выполнил ...

Создание проектов

Я создал 2 проекта в моей Eclipse SDK IDE.Драйвер ODA содержит ссылку на JAR-файл нашего старого приложения, который мы вызываем в коде.

Теперь он также вызывает проект HelloWorldX.

Начало сеанса отладки

Я добавил точку останова в открытое соединение #.Эта точка останова находится в первой строке.

Я запускаю сеанс отладки, щелкая элемент панели инструментов отладки.В первый раз, когда мне подсказывают, я выбрал запуск Eclipse Application.При этом запускается новый сеанс Eclipse SDK, в котором я могу загрузить файл конструктора отчетов из File-> Open ...

Отчет загружается в Eclipse SDK IDE следующим образом:

BIRT Report Eclipse

Я создаю новый источник данных, щелкнув правой кнопкой мыши Источники данных и выбрав Новый источник данных.В диалоговом окне «Новый источник данных» я выбираю имя драйвера ODA и нажимаю «Далее».Появится диалоговое окно с кнопкой «Проверить соединение».

Я нажимаю кнопку «Проверить соединение», которая попадает в точку останова в открытом окне «Соединение».

Когда я перехожу через следующий код, я получаю брошенный NoClassDefFoundError.

System.out.println(HelloThere.getIt());

Исключение также выдается, когда я вызываю любой из наших устаревших кодов во внешнем файле JAR, на который я ссылался.Eclipse отображает окно в рабочей области для строки OdaConnection.open (Свойства): 267, в которой находится Источник не найден, и кнопка с Изменить путь поиска источника ... Я пробовал разные комбинации для установки пути источника для нашего приложения.При нажатии на кнопку появится следующее диалоговое окно:

Edit Source Lookup Path

В двух словах: трассировка стека выглядит следующим образом:

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

РЕДАКТИРОВАТЬ

Я поместил некоторый код для вывода пути к классам из моего драйвера 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

END EDIT

Спасибо

Andez

1 Ответ

2 голосов
/ 20 июля 2011

Перепробовав все виды решений, я, наконец, взломал его.

Следуя примеру драйвера ODA для интеграции и расширения BIRT CSV, я заметил, что был драйвер Hibernate.Вы можете скачать исходный код с Активировать сайт .

Этот драйвер был собран по-разному.У него были настройки для манипулирования путем к классу при его создании с помощью мастера.К сожалению, путь к классу не мог быть установлен в версии Eclipse SDK, которую я скачал - Indigo.Так что я решил пройтись вручную и увидеть различия.

Для этого вам нужно всего лишь открыть MANIFEST.MF в Eclipse IDE.

вкладка build.properties

Включите все файлы JAR, на которые вы хотите сослаться / включить следующие ссылки:

source.odasentinel.jar = src/
output.odasentinel.jar = bin/
bin.includes = plugin.xml,\
           META-INF/,\
           odasentinel.jar,\
           lib/activation.jar\

...

Вкладка MANIFEST.MF

Установите параметр Bundle-ClassPath, чтобы включить все файлы JAR, на которые вы хотите сослаться / включить, следующим образом:

Bundle-ClassPath: odasentinel.jar,
 lib/activation.jar,
 lib/bsh-2.0b2.jar,
 lib/comm.jar,

Вы можетеТеперь запустите и отладьте драйвер ODA с помощью Eclipse.

...