Я разрабатываю приложение Java, которое выполняет длинную серию запросов и вычислений и представляет свои результаты в виде серии HTML-страниц. Для визуализации графиков я некоторое время экспериментировал с библиотекой JUNG, и оказалось, что реальная сила библиотеки заключается в поддержке взаимодействия с пользователем, что, конечно же, недоступно, когда график сохраняется в виде статического изображения (PNG в моем случае). кейс).
Мне было интересно, будет ли это:
а) возможно
б) осуществимый
в) разумный
... для создания апплета во время выполнения основного приложения, которое затем можно вставить в HTML-отчеты и использовать в интерактивном режиме после завершения выполнения приложения и просмотра пользователем страниц отчета.
Если это невозможно по техническим причинам; есть ли у вас какие-либо альтернативные рекомендации/предложения относительно того, как я могу добиться чего-то подобного?
Спасибо,
РЕДАКТИРОВАТЬ: Просто чтобы прояснить концепцию, «основное» приложение является звеном в цепочке событий и, следовательно, имеет отдельный графический интерфейс. Идея апплета состоит НЕ в том, чтобы имитировать или переносить все содержимое основного приложения на 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 есть правильная иерархия папок вплоть до моего класса апплета, который также существует.
Зачем же я все это записал; хорошо, потому что, когда я пытаюсь запустить свой апплет в отчетах, я получаю:
java.lang.NoClassDefFoundError: bin/my/domain/project/visualization/HierarchyGraphApplet (wrong name: my/domain/project/visualization/HierarchyGraphApplet)
Я читал похожие вопросы, такие как: это или это, но похоже, что проблема в другом. Я дважды проверил орфографию и т. д. Есть ли что-то простое, что я упустил, или есть более сложная проблема?