Я искал все 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
Это 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. Толерантно, но неправильно.
проблема в том, что у вас есть html рядом с файлом java file not class. найдите каталог файла класса и поместите там файл html.
файл класса имеет расширение Applet.class, а не Applet.java
поэтому в вашем случае ваш файл класса может находиться в файле webApplet/bin/classes
Проблема в том, что файл 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 могла распознать банку.