Как правильно указать кодовую базу и архив в апплете Java? - PullRequest
11 голосов
/ 10 мая 2011

Я использую версию Firefox> 3.5 (3.5. , 3.6. , 4. *) И пытаюсь правильно указать свойства archive и codebase, но это не работает. Мой основной класс для апплета находится в archive, а некоторые необходимые классы, которые загружаются во время выполнения, находятся в codebase. Если я указываю только archive, то апплет загружается, но классы из codebase отсутствуют. Если я укажу archive и codebase, то апплет не сможет быть загружен. Похоже, апплет пытается загрузить основной класс из папки codebase и не смотрит в файл archive.

<html>    
<body>
<applet width=600 height=300 code="MyClass.class" 
  type="application/x-java-applet;jpi-version=6" 
  archive="http://myurl.com/archive/myjar.jar" 
  codebase="http://myurl.com/classes">
    no applet
</applet>
</body>    
</html>

Главный класс расположен в http://myurl.com/archive/myjar.jar, а классы времени выполнения расположены в http://myurl.com/classes.

1 Ответ

22 голосов
/ 10 мая 2011

Атрибут codebase указывает базовый URL-адрес апплета - каталог, содержащий код апплета. Он используется при поиске jar-файлов в атрибуте archive таким образом, что все jar-атрибуты в атрибуте archive ищутся относительно codebase.
Так. Когда вы используете archive="http://myurl.com/archive/myjar.jar" и codebase="http://myurl.com/classes" вместе, это означает: найти "http://myurl.com/archive/myjar.jar" в папке " http://myurl.com/classes".
То есть полный путь поиска: "http://myurl.com/classes/http://myurl.com/archive/myjar.jar". И, конечно, его невозможно найти!
Кроме того, классы, чьи jar-файлы не указаны в атрибуте archive, не могут быть найдены без атрибута codebase. То есть если нет codebase, то нет возможности найти ваши классы в папке "http://myurl.com/classes".

Более подробную информацию можно найти в учебнике Развертывание с тегом апплета .

Я предлагаю следующее решение :

  1. Поместить myjar.jar в папку http://myurl.com/classes;
  2. Предполагается, что ваш MyClass.class находится в по умолчанию пакете, а в "http://myurl.com/archive/myjar.jar", должен работать следующий код:

<html>    
<body>
<applet width=600 height=300 code="MyClass" 
  type="application/x-java-applet;jpi-version=6" 
  archive="myjar.jar" 
  codebase="http://myurl.com/classes">
   no applet
</applet>
</body>    
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...