Java-апплет под веб-папкой, ClassNotFoundException - PullRequest
1 голос
/ 21 декабря 2011

Сначала я встраивал апплет в страницу с тегом APPLET следующим образом:

<APPLET code="MyApplet.class" codebase="/" align="baseline"
    width="200" height="200">
    Your browser does not support Java Applets.
</APPLET>

Файл класса апплета находился в корневом веб-каталоге в той же папке, что и страница PHP.

Теперь я переместил файлы классов из Интернета в указанную выше папку и попытался изменить код следующим образом:

code = "../MyApplet.class"

Но, похоже, это заставило апплет думать, что класс называется "... MyApplet.class"

Итак, я изменил его обратно и вместо этого изменил кодовую базу следующим образом:

code = "MyApplet.class" и codebase = "../"

Но это все еще дает мне ClassNotFoundException.

Я думаю, что апплеты на стороне клиента, так что теперь я думаю, что невозможно сохранить файлы класса апплета вне публичного домена, потому что они должны быть загружены на клиент?

Может кто-нибудь подтвердить это для меня, пожалуйста, или если я ошибаюсь, скажите мне, как я могу правильно указать относительные пути?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Из другого ответа ..

URL не поддерживают нотацию, такую ​​как ..

Конечно, они поддерживают!

import java.io.File;
import java.net.URL;

class WhereIsMyGrandParent {
    public static void main(String[] args) throws Exception {
        File f = new File("WhereIsMyGrandParent.java");

        URL url = f.toURI().toURL();

        URL parent = new URL(url, "..");
        System.out.println("grand parent: " + parent);
    }
}

Настоящая проблема заключается в неправильном понимании того, для чего эти параметры и как используются значения / что они означают ..

code="MyApplet.class" codebase="/"

1) Атрибут кода должен быть полностью квалифицированнымНаименование класса.Так что правильными примерами могут быть

code="MyApplet"

.. или

code="com.our.MyApplet"

2) A codebase из / переводится как «корень домена»».Например, апплет на http://our.com/applets/stockapplet/applet.html может сформировать URL-адрес /, и это будет указывать на http://our.com/. Обратите внимание, особенно, что нет .. (родительского), который будет иметься от корня домена.


Я не совсем понимаю структуру сервера с точки зрения местоположения

  1. апплет HTML
  2. код апплета

Пожалуйста, рассмотрите возможность предоставления явных (или относительных) URL-адресов для расположения каждого или, что лучше, вложенного списка.EG

  • /
    • code
      • MyApplet.class
    • applet
      • applet.html
1 голос
/ 21 декабря 2011

Да, класс апплета загружается плагином апплета в ваш веб-браузер с использованием URL-адреса, который он создает как объединение URL-адреса вашей страницы и базы кода. Поскольку URL не поддерживают нотацию, такую ​​как .. (это нотация пути к файлу), вы не можете использовать ее при настройке апплета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...