我一直在开发一个 Java 应用程序,它执行一系列查询和计算,并将其结果显示为一系列 HTML 页面。为了可视化图表,我一直在使用 JUNG 库,它看起来库的真正优势在于对用户交互的支持,当图表保存为静态图像(PNG 在我的案子)。
我想知道它是否会是:
a) 可能的
b) 可行的
c) 明智的
...在主应用程序执行期间创建一个小程序,然后可以将其插入到 HTML 报告中,并且可以在应用程序完成执行并且用户浏览报告页面后以交互方式使用。
如果由于技术原因无法做到这一点;对于我如何实现这样的目标,您有任何替代建议/建议吗?
谢谢,
编辑:只是为了澄清这个概念,“主”应用程序是事件链中的一个链接,因此具有如此独立的 GUI。小程序的想法不是模仿或将所有内容从主应用程序传输到 HTML 页面,而是使当用户在执行后查看图形结果时使用 JUNG 库附带的交互式工具成为可能主软件完成。
让我知道这个概念是否仍然不清楚,我将再次尝试更详细地解释事情。
更新:根据我得到的建议,感谢@boffinBrain 和@AndrewThompson,我编写了我的小程序,并与其他可视化相关类一起放在我的项目中的一个包中。层次结构如下:
my.domain.project
my.domain.project.tests
my.domain.project.visualization
现在 HTML 报告是在本地驱动器上的任意位置创建的,这是一个功能,因为用户在运行“主”应用程序之前提供了一个输出文件夹。在我的ReportGenerator
类(生成这些 HTML 文件)中,我有以下代码:
File bin = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toString());
String codebase = bin.getParent();
System.out.println(codebase);
String archive = "lib/collections-generic-4.01/collections-generic-4.01.jar";
String applet_name = "bin/my.domain.project.visualization.HierarchyGraphApplet.class";
codebase
打印输出显示:file:/home/username/workspace/project
这是我所期望的正确。在项目文件夹下有 bin/ 和 lib/,在 bin 内有正确的文件夹层次结构,一直到我的 applet 类,它也存在。
现在我为什么要写下这一切;好吧,因为当我尝试在报告上运行我的小程序时,我得到:
java.lang.NoClassDefFoundError: bin/my/domain/project/visualization/HierarchyGraphApplet (wrong name: my/domain/project/visualization/HierarchyGraphApplet)
我读过类似的问题,例如:this或this,但似乎问题出在其他地方。我仔细检查了拼写等...我缺少一些简单的东西,还是手头有更复杂的问题?