Как упаковать апплет с несколькими.библиотеки jar?
Я создаю апплет Java из крупномасштабного ранее существующего проекта (Vizster). Я использую NetBeans 6.7.1 с JDK 1.5 на Mac OS X.
Я пытаюсь запустить апплет из одного вывода .jar-файл, но когда я это делаю, он говорит "апплет загружен" в нижней части экрана в Firefox, и в консоли java ничего нет, но ничего не отображается в окне для апплета. У меня были разные ошибки в Firefox до этого, включая такие ошибки, как "appletNotLoaded: ClassDefNotFoundError", а также ошибки безопасности, но в моей консоли java никогда нет вывода. Вот html-файл для апплета:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<applet codebase ="." code="zuve.ZuveApplet.class"
archive="ZuveApplet.jar"
height="1000" width="1000"/>
</body>
</html>
где zuve.ZuveApplet.класс, где находится мой основной метод, и " ZuveApplet.jar " - это имя выходного файла jar. Вот ZuveApplet.java, основной класс метода:
package zuve;
import vizster.Vizster;
import vizster.VizsterLib;
import java.applet.Applet;
public class ZuveApplet extends Applet {
public static final String DEFAULT_START_UID = "186297";
@Override
public void init() {
new Vizster();
}
public static void main(String[] argv) {
VizsterLib.setLookAndFeel();
//String startUID = argv.length > 0 ? argv[0] : DEFAULT_START_UID;
String startUID = DEFAULT_START_UID;
String file = argv.length > 0 ? argv[0] : null;
new Vizster(startUID, file);
}
}
апплет отлично работает как автономный (не встроенный в html), но мне нужно его встроить. Объект" Vizster " является расширение JFrame, поэтому я полагаю, что я должен просто создать его экземпляр и добавить его в апплет. Может быть, все гораздо сложнее?
Я новичок в java и апплетах в целом, к сожалению. Я видел много сообщений на форуме о том, что структура дерева источников является проблемой, поэтому:
1) это проблема, что я использую несколько пакетов? Все они находятся в каталоге src моего проекта.
2)есть ли что-нибудь, что мне нужно разместить в моей java домашний каталог? Я знаю, что у многих людей есть проблемы с classpath, но я использую современную IDE, которая, как я думал, позаботилась обо всем этом для меня.
3) при импорте моего проекта в проект веб-приложения NetBeans Java я должен добавить апплет в проект как a .jar, или я должен добавить весь проект?
4)первоначально, когда я создал этот апплет, у меня было всего несколько исходных файлов и куча .библиотеки jar как зависимости, но когда я проверил вывод .сосуд, я видел только скомпилированные исходные файлы. Никаких следов файлов из библиотек. Так и должно быть? Я заметил, что если я переместил выход .банку из своего папку, он больше не мог работать автономно. Я так и думал .банки должны были быть самодостаточными, не так ли? Есть ли что-нибудь, что я должен знать о создании исполняемый файл банке?
5) на боковой ноте размер апплета, обозначенного в тегах апплета в html, должен точно соответствует размеру самого апплета?
извините за огромный пост и невероятно расплывчатую проблему, я работаю с командой, в которой никто ничего не знает об апплетах или Java (настоящий блестящий из нас, я знаю). Любая помощь или общие предложения действительно помогут.
спасибо!
1 ответов
вы можете указать несколько банок в атрибуте архива:
<applet codebase ="." code="zuve.ZuveApplet.class"
archive="ZuveApplet.jar,thing.jar,anotherThing.jar"
height="1000" width="1000"/>
в JFrame-это контейнер верхнего уровня, поэтому вы не сможете добавить его в приложение. Вы можете заставить апплет создать экземпляр вашего объекта и позволить ему открыть свое собственное окно. Более гибким подходом было бы рефакторинг вашего объекта в JPanel. Как JPanel, он может быть добавлен в JApplet или в JFrame, если вы также хотите поддержать его запуск в качестве приложения.
также взгляните на у jnlp поскольку это позволяет развертывать код как апплет или как приложение, а также предоставляет APIs для печати и локального доступа к файлам. Функциональность недоступна для простых апплетов.