ClassNotFoundException Java JApplet

0

Я искал все Stackoverflow и выяснил, что проблема, кажется, путь к классу неверен. (Я пытался настроить мой код, но он все равно дает мне ClassNotFoundException). Цель этого кода - позволить пользователю щелкнуть по списку, а затем перенаправить его на веб-сайт. Это также обучение pratice из thenewboston.

Ява:

  package webApplet;

  import java.applet.AppletContext;
  import java.awt.BorderLayout;
  import java.net.MalformedURLException;
  import java.net.URL;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import javax.swing.JApplet;
  import javax.swing.JLabel;
  import javax.swing.JList;
  import javax.swing.JScrollPane;
  import javax.swing.event.ListSelectionEvent;
  import javax.swing.event.ListSelectionListener;

  public class Applet extends JApplet {

    HashMap webInfo;
    List<String> name;
    JList list;

    public void init() {

    webInfo = new HashMap();
    name = new ArrayList();

    populate();
    add(new JLabel("please click on a website"), BorderLayout.NORTH);

    list = new JList(name.toArray());
    list.addListSelectionListener(
    new ListSelectionListener() {
        public void valueChanged(ListSelectionEvent event) {

            Object object = list.getSelectedValue();
            URL url = (URL) webInfo.get(object);
            AppletContext browser = getAppletContext();
            browser.showDocument(url);
        }
    });
    add(new JScrollPane(list), BorderLayout.CENTER);
}

public void populate() {

    URL url;
    String title;
    String address;
    int counter = 0;

    title = getParameter("title" + counter);

    while (title != null) {


        try {
            address = getParameter("address" + counter);
            url = new URL(address);
            webInfo.put(title, url);
            name.add(title);

        } catch (MalformedURLException ex) {
            System.out.println("hi");
        }
    }
    counter++;
    title = getParameter("title" + counter);

 }
}

HTML:

<html>
<body>
    <applet code= "webApplet.Applet.class" width = "500" height = "250">
        <param name= "title0" value = "thenewBoston.org">
        <param name= "address0" value = "http://thenewboston.org">
        <param name= "title1" value = "Awesome forum!">
        <param name= "address1" value = "http://tnbforum.com/">
    </applet>
</body>
</html>

Ошибка:

 Java Plug-in 10.25.2.16
 Using JRE version 1.7.0_25-b16 Java HotSpot(TM) Client VM
 User home directory = C:\Users\tin

 c:   clear console window
 f:   finalize objects on finalization queue
 g:   garbage collect
 h:   display this help message
 l:   dump classloader list
 m:   print memory usage
 o:   trigger logging
 q:   hide console
 r:   reload policy configuration
 s:   dump system and deployment properties
 t:   dump thread list
 v:   dump thread stack
 x:   clear classloader cache
 0-5: set trace level to <n>

при ошибке он имеет это: "webApplet.Applet.class"

Это поток моих файлов:

  website ----> 
               source packages----->
                              webApplet---->
                                          - Applet.java
                                          - bucky.html
Теги:
swing
classnotfoundexception
japplet

3 ответа

1

Это Applet.class попадает в то же место, что и Applet.java (пожалуйста, выберите лучшие имена классов BTW, даже TestApplet01 делает это явным, что мы не имеем в виду java.applet.Applet), тогда bucky.html как видно, должен быть в родительском каталоге.

  website ----> 
               source packages----->
                                  - bucky.html
                              webApplet---->
                                          - Applet.java
                                          - Applet.class

Что касается HTML. Изменить:

<applet code= "webApplet.Applet.class" width = "500" height = "250">
    <param name= "title0" value = "thenewBoston.org">
    <param name= "address0" value = "http://thenewboston.org">
    <param name= "title1" value = "Awesome forum!">
    <param name= "address1" value = "http://tnbforum.com/">
</applet>

к..

<applet code= "webApplet.Applet" width = "500" height = "250">
    ...
</applet>

Атрибут code должен быть полным именем класса. В то время как webApplet/Applet.class может быть href для класса, а webApplet.Applet - это FQN, webApplet.Applet.class - это просто..wrong. Толерантно, но неправильно.

  • 0
    Я обновил свой код, он по-прежнему дает мне то же исключение ошибки.
  • 0
    «Я обновил свой код ..» Код? HTML разметка. Исправление, которое я предложил, касается перемещения HTML, а не «кодирования».
1

проблема в том, что у вас есть html рядом с файлом java file not class. найдите каталог файла класса и поместите там файл html.

файл класса имеет расширение Applet.class, а не Applet.java

поэтому в вашем случае ваш файл класса может находиться в файле webApplet/bin/classes

  • 0
    Разве апплет не должен находиться в папке исходных пакетов, в которой находится папка webApplet?
  • 0
    это файл .java, файл класса обычно находится под bin
Показать ещё 1 комментарий
0

Проблема в том, что файл Applet.class не находится в classpath. Если вы не используете какую-либо IDE, вам может потребоваться вручную скомпилировать файл Applet.java:

// Assuming the Applet.java is in current directory and Java is setup fully.
prompt> javac Applet.java

Это создаст файл Applet.class как webApplet/Applet.class. здесь webApplet - это папка.

Объедините весь файл webApplet/Applet.class как

jar -cvf applet.jar webApplet/Applet.class

Добавьте путь jar в значение переменной среды CLASSPATH системы. См. Это о том, как это сделать: http://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html

Если вы используете IDE, например eclipse, это может помочь вам в этом. В любом случае, главное - убедиться, что банка находится в CLASSPATH, чтобы JVM могла распознать банку.

  • 0
    Я использую NetBeans, я все еще пытаюсь выяснить, как получить Applet.class, чтобы встать на путь. Я попытался поместить свой HTML-файл в папку с классом, а затем открыть его с помощью Google Chrome. (это ничего не решает)
  • 0
    Это не имеет ничего общего с расположением applet.class и html. По сути, браузер запускает крошечную JVM, внутри которой будет работать класс Applet; и вся JVM будет искать переменную среды CLASSPATH, чтобы найти любой класс, который вы хотите загрузить. Вам следует подходить шаг за шагом. Сначала создайте Jar, затем добавьте jar в переменную CLASSPATH, а затем загрузите html в любом браузере. Давайте сначала создадим банку, и дайте мне знать, когда закончите.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню