Ola pessoal,
criei um chat cliente/servidor. E o cliente fiz em applet, este applet roda normalmente diretamente do appletviewer e roda tambem se eu abrir pelo IE. Sendo que quando coloco ele no servidor (ja testei no tomcat e em outro servidor) da este erro:
java.lang.NoClassDefFoundError: ClienteApplet$1
at ClienteApplet.init(ClienteApplet.java:26)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
percebam q este erro eh diferente de quando o browser realmente nao acha o applet.
o arquivo.class esta no raiz do servidor e a tag do html esta correto:
<applet width="349" height="286" code="ClienteApplet.class">
</applet>
ja tentei compilar com a opçao target 1.1 tb.
Tenho o j2sdk 1.4.2_03
Nao sei mais o que fazer!!
ClienteApplet$1 eh uma classe anonima… vc enviou todos os .class da aplicacao para o servidor?
Rafael
J
josejorgejr
sim.
o o unico arquivo da aplicaçao eh o ClienteApplet.class
J
josejorgejr
o servidor tambem eh no meu proprio computador.
o html esta no mesmo diretorio do ClienteApplet.class
Jose Jorge Jr.
Rafael_Steil
Pela mensagem de erro, voce esqueceu de enviar algum arquivo para o servidor.
Mesmo que voce soh tenha um arquivo .java, ao compilar eh gerado 1 ou mais arquivos .class, dependendo de como vc programou. No caso, voce tem alguma classe anomima, que ao compilar o javac cria automaticamente um outro .class somente para ela, mesmo nao havendo um arquivo .java correspodentente.
Verifique os arquivos gerados na hora que voce compila o applet. La devera ter a ClienteApplet$1.class tambem.
Rafael
J
josejorgejr
Certo, no diretorio onde compile tambem gerou o ClienteApplet$1.class e coloquei o mesmo la no servidor… mas continua dando o mesmo erro!
Jose Jorge Jr.
J
josejorgejr
ninguem pode me ajudar por favor?
Jose Jorge Jr.
smota
Pode, o Rafael tá tentando .... confere ai a localização dos arquivos.
Nunca trabalhei com applets, mas se não me falha a memória quando seu applet usa mais de uma classe é necessário setar a propriedade codebase na tag applet apontando pra um jar (um diretorio talvez tb funcione, nao sei).
Dê uma olhada na declaração da tag.
[EDITADO] Eis a declaração da tag, com os cumprimentos do W3C:
<!--===================JavaAPPLETtag================================--><!--ThistagissupportedbyallJavaenabledbrowsers.CODEBASEspecifiesthebaseURLoftheapplet-thedirectorythatcontainstheapplet'scode.IfthisattributeismissingthedocumentsbaseURLisusedinstead.OneofCODEorOBJECTmustbepresent.Archivefilesspeedloadingofappletsthroughacompressedwrapperforappletresources.TheALTattributegivestexttodisplayifthebrowserunderstandstheAPPLETtagbutcan't run Java applets. WIDTH, HEIGHT, ALIGN,HSPACEandVSPACEaredefinedinthesamewayasforIMGelements.--><!ELEMENTAPPLET--(PARAM | %text)*><!ATTLISTAPPLETcodebase%URL#IMPLIED -- optional base URL for applet --archiveCDATA#IMPLIED -- comma separated archive list --codeCDATA#IMPLIED -- applet class file --objectCDATA#IMPLIED -- serialized applet file --altCDATA#IMPLIED -- for display in place of applet --nameCDATA#IMPLIED -- allows applets to find each other --width%Pixels#REQUIRED -- suggested width in pixels --height%Pixels#REQUIRED -- suggested height in pixels --align%IAlign#IMPLIED -- vertical or horizontal alignment --hspace%Pixels#IMPLIED -- suggested horizontal gutter --vspace%Pixels#IMPLIED -- suggested vertical gutter --><!ELEMENTPARAM-OEMPTY><!ATTLISTPARAMnameNMTOKEN#REQUIRED -- The name of the parameter --valueCDATA#IMPLIED -- The value of the parameter --><!--Hereisanexample:<appletcodebase="applets/NervousText"code=NervousText.classwidth=300height=50><paramname=textvalue="JavaisCool!"><imgsrc=sorry.gifalt="ThislooksbetterwithJavasupport"></applet>-->
Entonces esquece o papo sobre o codebase, se os 2 arquivos estão no MESMO diretório deve funcionar.
Qual o erro que da agora? se estiver dando o mesmo erro ainda ( de nao encontrar um .class ), eh pq o .class deve estar em algum diretorio errado no servidor, ou nem estar…
Rafael
J
josejorgejr
Pessoal,
descobri que o erro eh nesse trecho do codigo:
com esse trecho ele gera aquele arquivo ClienteApplet$1.class q eh justamente o q nao eh encontrado, mesmo ele estando no diretorio certo no servidor.
Parece logico para alguem? para mim nao
Jose Jorge Jr.
Rafael_Steil
Essa eh a classe anonima sobre a qual estou falando desde o inicio…
Se quiser tentar de outra maneira, voce pode implementar usando uma classe concreta e mandar todos os .class pro ar, e ver se rola…
Rafael
J
josejorgejr
Eh…
Mudei a forma de implementar o evento e funcionou blza.