Java-апплеты, содержащиеся в пакетах - PullRequest
1 голос
/ 02 сентября 2011

Можно ли в апплете жить в пакете? то есть:

bfwd.RedemptionOnline.client

будет пакетом, и RedemptionOnlineApplet.class будет жить внутри этого пакета. Если вы можете, как бы вы создали тег для него, если он жил внутри RedemptionOnline.jar?

вот тег, который я использую:

<applet code="bfwd/RedemptionOnline/client/RedemptionOnlineApplet" width="1" height="1" archive="RedemptionOnline.jar">
    <PARAM NAME="MAYSCRIPT" VALUE="true">
</applet>

и вот журнал ошибки, которую я получаю:

Java Plug-in 10.0.0.147
Using JRE version 1.7.0-b147 Java HotSpot(TM) Client VM
User home directory = C:\Users\LordZardeck
----------------------------------------------------
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>
----------------------------------------------------
basic: Added progress listener: sun.plugin.util.ProgressMonitorAdapter@1b1a66b
basic: Plugin2ClassLoader.addURL parent called for http://localhost/redemption/RedemptionOnline.jar
network: Cache entry found [url: http://localhost/redemption/RedemptionOnline.jar, version: null] prevalidated=false/0
network: Connecting http://localhost/redemption/RedemptionOnline.jar with proxy=DIRECT
network: Connecting http://localhost:80/ with proxy=DIRECT
network: Connecting http://localhost/redemption/RedemptionOnline.jar with cookie "PHPSESSID=loub2i9mprilg7ihvjn8g960v1"
network: ResponseCode for http://localhost/redemption/RedemptionOnline.jar : 304
network: Encoding for http://localhost/redemption/RedemptionOnline.jar : null
network: Disconnect connection to http://localhost/redemption/RedemptionOnline.jar
cache: Reading Signers from 5 http://localhost/redemption/RedemptionOnline.jar | C:\Users\LordZardeck\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\4\40bb90c4-62ab3bc6.idx
network: No certificate info for unsigned JAR file: http://localhost/redemption/RedemptionOnline.jar
cache:  Read manifest for http://localhost/redemption/RedemptionOnline.jar: read=82 full=82
network: Cache entry not found [url: http://localhost/redemption/, version: null]
network: Cache entry not found [url: http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class, version: null]
network: Connecting http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class with proxy=DIRECT
network: Connecting http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class with cookie "PHPSESSID=loub2i9mprilg7ihvjn8g960v1"
network: Cache entry not found [url: http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class, version: null]
network: Connecting http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class with proxy=DIRECT
network: Connecting http://localhost/redemption/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class with cookie "PHPSESSID=loub2i9mprilg7ihvjn8g960v1"
java.lang.ClassNotFoundException: bfwd.RedemptionOnline.client.RedemptionOnlineApplet
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
basic: load: class bfwd/RedemptionOnline/client/RedemptionOnlineApplet not found.
java.lang.ClassNotFoundException: bfwd.RedemptionOnline.client.RedemptionOnlineApplet
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@1b1a66b
security: Reset deny session certificate store

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Если ваш класс Applet упакован в JAR-файл, который можно загрузить с помощью http://example.com/RedemptionOnline.jar,, то вы должны указать полное имя упакованного класса в code и (относительный) общедоступный веб-URL-адрес файла JARв archive (примечание: чувствительно к регистру!):

<applet code="bfwd.RedemptionOnline.client.RedemptionOnlineApplet" archive="RedemptionOnline.jar">

(Я согласен с Джоном в том, что имена пакетов должны быть в нижнем регистре, соответствовать Соглашения об именах Java )

Если ваш класс Applet представляет собой просто свободный .class файл в общедоступном веб-контенте, который можно загрузить с помощью http://example.com/bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class,, тогда вы должны точно указать его (относительный) общедоступный веб-URL в code (примечание: также с учетом регистра!):

<applet code="bfwd/RedemptionOnline/client/RedemptionOnlineApplet.class">

Теперь вы понимаете, когда использовать точки и когда использовать косую черту, а когда суффикс .class?

1 голос
/ 02 сентября 2011

Да, апплеты могут быть в пакетах - хотя я бы посоветовал вам следовать соглашениям и назвать пакет как-то так:

com.bfwd.redemptiononline.client

Когда вы создаете тег, вы просто указываете полное имя:

com.bfwd.redemptiononline.client.RedemptionOnlineApplet.class

или, возможно, (документация варьируется, и я уже давно не работаю с апплетами)

com.bfwd.redemptiononline.client.RedemptionOnlineApplet

или даже:

com/bfwd/redemptiononline/client/RedemptionOnlineApplet.class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...