трудности с запуском некоторых старых Java-апплетов, у меня есть Java 8 и appletviewer
Я пытаюсь запустить несколько старых Java-апплетов из старой книги Роберта ЛаФора «Алгоритмы и структуры данных в Java».
https://sites.fas.harvard.edu/~cscie119/resources/lafore/
или
https://cs.brynmawr.edu/Courses/cs206/spring2004/lafore.html
У меня установлен JDK 1.8/Java 8, и он включает в себя appletviewer.exe.C:\Program Files\Java\jdk1.8.0_251\bin\appletviewer.exe
Я не помню, как ими можно управлять.
У меня на пути есть appletviewer.exe.
C:\aaa>path=%path%;C:\Program Files\Java\jdk1.8.0_251\bin
C:\aaa>appletviewer
Usage: appletviewer <options> url(s)
where <options> include:
-debug Start the applet viewer in the Java debugger
-encoding <encoding> Specify character encoding used by HTML files
-J<runtime flag> Pass argument to the java interpreter
The -J option is non-standard and subject to change without notice.
C:\aaa>wget https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/Array.class
--2020-05-19 07:00:11-- https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/Array.class
Resolving cs.brynmawr.edu (cs.brynmawr.edu)... 165.106.10.107
Connecting to cs.brynmawr.edu (cs.brynmawr.edu)|165.106.10.107|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3967 (3.9K) [application/octet-stream]
Saving to: 'Array.class'
Array.class 100%[=======================================================================>] 3.87K --.-KB/s in 0s
2020-05-19 07:00:11 (18.7 MB/s) - 'Array.class' saved [3967/3967]
C:\aaa>dir Array.class
Volume in drive C has no label.
Volume Serial Number is 4645-5DCE
Directory of C:\aaa
03/01/2005 15:59 3,967 Array.class
1 File(s) 3,967 bytes
0 Dir(s) 335,436,058,624 bytes free
C:\aaa>wget https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/Array.java
--2020-05-19 07:00:24-- https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/Array.java
Resolving cs.brynmawr.edu (cs.brynmawr.edu)... 165.106.10.107
Connecting to cs.brynmawr.edu (cs.brynmawr.edu)|165.106.10.107|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2020-05-19 07:00:25 ERROR 404: Not Found.
C:\aaa>appletviewer Array.class
C:\aaa>appletviewer Array
I/O exception while reading: C:\aaa\Array (The system cannot find the file specified)
C:\aaa>
В качестве другого маршрута я только что попробовал https://sourceforge.net/projects/portableapps/files/Mozilla%20Firefox%2C%20Portable%20Ed./ Mozilla Firefox, Portable Edition 2.0.0.8 22 октября 2007 г.
Но Firefox не поставляется с плагином и не может его установить.
Добавлен
Возвращаясь к попыткам использования appletviewer, в результате поиска в Google этой ошибки я обнаружил, что appletviewer предназначен для запуска с использованием HTML-файла.
Поэтому я попробовал
C:\aaa>wget https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/Array.html
и я получаю
C:\aaa>Appletviewer Array.html
java.lang.NoClassDefFoundError: personGroup
at Array.init(Array.java:746)
at sun.applet.AppletPanel.run(AppletPanel.java:434)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: personGroup
at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:219)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:152)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 3 more
Я попробовал jd-gui-windows-1.6.6, открыл Array.class и вижу, что он имеетprivate personGroup thePersonGroup;
По этому URL
https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/....
Без сомнения, это ссылка на файловую систему.
ЕстьChap02/Array/Array.html
иChap02/Array/Array.class
но я не вижу ни personGroup.class, ни personGroup.java
1 ответ
Вы загрузили только Array.class, который является «стартап-классом». Однако этот класс загружает другие классы, находящиеся в том же каталоге. Например, классpersonGroup
также доступен в этом каталоге:
https://cs.brynmawr.edu/Courses/cs206/spring2004/WorkshopApplets/Chap02/Array/personGroup.class
Следовательно, вам придется загружать каждый класс, на который есть ссылка в каждом загружаемом вами классе, если только у вас нет всех задействованных классов.
Поскольку веб-сервер запрещает листинг папок, вам придется идентифицировать и загружать каждый класс один за другим.
Какой класс загрузить следующим, видно вNoClassDefFoundError
исключения, которые вы получите.