Я пытаюсь сделать апплет с jPCT.Использование jPCT требует добавления jar jar в путь к классам.Я думал, что у меня это есть, но я все еще получаю исключение класса не найдено относительно одного из классов jPCT.
Мои команды:
$ javac -classpath /var/www/html/jpct.jar:. /var/www/html/HelloWorld.java
$ jar cf /var/www/html/HelloWorld.jar /var/www/html/HelloWorld.class
Мой HTML:
<html>
<head>
<title>Hello World</title>
</head>
<body>
<applet code="HelloWorld"
width=640
height=480
archive="http://applet/HelloWorld.jar,http://applet/jpct.jar">
</applet>
</body>
</html>
Я использую Apache, и я убедился, что мои файлы jar доступны для загрузки из URL-адресов в моем коде.
Точное сообщение об ошибке:
$ firefox http://applet/HelloWorld.html
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.2) (6b22-1.10.2-0ubuntu1~11.04.1)
OpenJDK Server VM (build 20.0-b11, mixed mode)
(firefox-bin:15296): LIBDBUSMENU-GTK-CRITICAL **: dbusmenu_menuitem_property_set_shortcut: assertion `gtk_accelerator_valid(key, modifier)' failed
Unable to use Firefox's proxy settings. Using "DIRECT" as proxy type.
java.lang.NoClassDefFoundError: com/threed/jpct/World
at HelloWorld.init(HelloWorld.java:18)
at sun.applet.AppletPanel.run(AppletPanel.java:436)
at net.sourceforge.jnlp.NetxPanel.run(NetxPanel.java:69)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.ClassNotFoundException: com.threed.jpct.World
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at net.sourceforge.jnlp.runtime.JNLPClassLoader$CodeBaseClassLoader.findClass(JNLPClassLoader.java:1348)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 4 more
Exception in thread "TimerQueue" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:155)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1262)
at java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:459)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:205)
at javax.swing.TimerQueue.run(TimerQueue.java:167)
at java.lang.Thread.run(Thread.java:679)
Что я делаю неправильно?