Как упаковать апплет с несколькими.библиотеки 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 для печати и локального доступа к файлам. Функциональность недоступна для простых апплетов.