所有
我不太确定这是否是BIRT / Eclipse SDK / Developer问题......
我们正在研究BIRT for Eclipse SDK(Indigo)。我们投资了Jason Weathersby等人的“整合和扩展BIRT”一书。它将指导您完成创建第一个ODA驱动程序的过程,该驱动程序本质上是一个2个插件项目:ODA驱动程序和ODA驱动程序UI。不幸的是,它从未谈论任何细节的调试。
我们的想法是让ODA驱动程序与我们的应用程序连接以检索数据。我已经从Properties-> Java Build Path为我们的应用程序JAR文件添加了外部JAR参考到ODA驱动程序项目。它出现在Eclipse工作区中的Referenced Libraries下。我们的应用程序使用的所有引用的JAR也显示在Referenced Libraries下。
由于事情尚未完成,我将在稍后解释,我还在Eclipse SDK工作区中创建了一个HelloWorldX java项目,该项目有一个名为HelloThere的类,其中包含一个静态方法:
public static String getIt()
{
return "Ding Dong";
}
我已将此作为项目参考从Properties-> Java Build Path添加到ODA驱动程序项目。
所以我做了什么......
创建项目
我在Eclipse SDK IDE中创建了2个项目。 ODA驱动程序包含对我们在代码中调用的遗留应用程序JAR文件的引用。
现在也调用了HelloWorldX项目。
开始调试会话
我在Connection#open中添加了一个断点。这个断点在第一行。
我通过单击调试工具栏项来启动调试会话。第一次它提示我选择运行Eclipse Application。这将启动Eclipse SDK的新会话,我可以从File-> Open ...
加载报表设计器文件报告按如下方式加载到Eclipse SDK IDE中:
通过右键单击“数据源”并选择“新建数据源”来创建新的数据源。在New Data Source对话框中,我选择我的ODA驱动程序的名称,然后单击Next。这将显示带有“测试连接”按钮的对话框。
我单击“测试连接”按钮,该按钮点击Connection#open中的断点。
当我跳过下面的代码时,我会抛出NoClassDefFoundError。
System.out.println(HelloThere.getIt());
当我调用我引用的外部JAR文件中的任何遗留代码时,也会抛出异常。 Eclipse在OdaConnection.open(Properties)行的工作区中显示一个窗口:267找不到Source,还有一个带有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年从未得到过回复! See Eclipse Community Forums
修改
我已经使用System.getProperty(“java.class.path”,“。”)输入了一些代码来从我的ODA驱动程序输出类路径;
d:\ SOFTWARE \ Eclipse的\蚀-SDK-3.7的win32 \蚀\插件\ org.eclipse.equinox.launcher_1.2.0.v20110502.jar
结束编辑
由于
Andez
答案 0 :(得分:2)
尝试了各种解决方案之后,我终于破解了它。
在按照集成和扩展BIRT CSV ODA驱动程序示例后,我注意到有一个Hibernate驱动程序。您可以从Actuate Site下载源代码。
这个驱动程序的组合方式不同。它具有在通过向导创建类路径时操作类路径的设置。遗憾的是,无法在我下载的Eclipse SDK版本中设置类路径 - Indigo。所以我想我会亲自去看看差异。
要执行此操作,您只需在Eclipse IDE中打开MANIFEST.MF。
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,
您现在可以使用Eclipse运行和调试ODA驱动程序。