簡體   English   中英

ClassNotFoundException Java JApplet

[英]ClassNotFoundException Java JApplet

我一直在搜索Stackoverflow,發現問題似乎是,該類的路徑不正確。 (我試圖調整我的代碼,但它仍然給我ClassNotFoundException)這個代碼的目的是,讓用戶點擊列表,然后它將它們重定向到一個網站。這也是來自thenewboston的實踐培訓。

Java的:

  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

問題是你有你的HTML文件旁邊的HTML不是類文件。 找到類文件的目錄並將html文件放在那里。

類文件有擴展名Applet.class而不是Applet.java

所以在你的情況下,你的類文件可能在webApplet / bin / classes下

它的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。 容忍,但錯了。

問題是Applet.class文件不在類路徑中。 如果您沒有使用任何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

如果您使用像eclipse這樣的IDE,它可能會幫助您做到這一點。 無論如何,主要的是確保jar在CLASSPATH中,以便JVM可以識別jar。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM