【发布时间】:2011-07-20 09:44:30
【问题描述】:
全部,
我不太确定这是否是 BIRT/Eclipse SDK/开发者问题...
我们正在研究 BIRT for Eclipse SDK (Indigo)。我们投资了 Jason Weathersby 等人的《集成和扩展 BIRT》一书。它将带您完成创建您的第一个 ODA 驱动程序的过程,该驱动程序本质上是一个 2 个插件项目:ODA 驱动程序和 ODA 驱动程序 UI。不幸的是,它从不详细谈论调试。
这个想法是让 ODA 驱动程序连接到我们的应用程序以检索数据。我已将我们的应用程序 JAR 文件的外部 JAR 引用从 Properties->Java Build Path 添加到 ODA Driver 项目。这出现在 Eclipse 工作区的 Referenced Libraries 下。我们的应用程序使用的所有引用的 JAR 也显示在引用的库下。
由于事情一直不正常,我将在稍后解释,我还在 Eclipse SDK 工作区中创建了一个 HelloWorldX java 项目,它有一个名为 HelloThere 的类和一个静态方法,即:
public static String getIt()
{
return "Ding Dong";
}
我已将此作为项目引用添加到 Properties->Java Build Path 中的 ODA Driver 项目。
所以我做了什么......
创建项目
我在我的 Eclipse SDK IDE 中创建了 2 个项目。 ODA 驱动程序包含对我们在代码中调用的旧应用程序 JAR 文件的引用。
这现在也调用了 HelloWorldX 项目。
开始调试会话
我在 Connection#open 中添加了一个断点。这个断点在第一行。
我通过单击调试工具栏项来启动调试会话。第一次提示我选择作为 Eclipse 应用程序运行。这会启动一个新的 Eclipse SDK 会话,我可以从 File->Open... 加载报表设计器文件...
报告加载到 Eclipse SDK IDE 中,如下所示:
我通过右键单击数据源并选择新数据源来创建一个新数据源。从 New Data Source 对话框中,选择我的 ODA Driver 的名称并单击 Next。这将显示一个带有测试连接按钮的对话框。
我点击了在 Connection#open 中的断点的测试连接按钮。
当我跳过以下代码时,会抛出 NoClassDefFoundError。
System.out.println(HelloThere.getIt());
当我调用我引用的外部 JAR 文件中的任何旧代码时,也会引发异常。 Eclipse 在 OdaConnection.open(Properties) line: 267 的工作区中显示了一个窗口,它有 Source not found 和一个带有 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 驱动程序的人。我已经在整个互联网上寻找解决方案。我发现唯一相关的帖子是在 2007 年从未得到答案的 Eclipse 论坛上!!! See Eclipse Community Forums
编辑
我已经使用 System.getProperty("java.class.path","."); 放置了一些代码来从我的 ODA 驱动程序中输出类路径;
D:\Software\Eclipse\eclipse-SDK-3.7-win32\eclipse\plugins\org.eclipse.equinox.launcher_1.2.0.v20110502.jar
结束编辑
谢谢
安德斯
【问题讨论】:
标签: eclipse debugging eclipse-plugin birt