Avatar billede angelenglen Nybegynder
30. september 2010 - 10:49 Der er 10 kommentarer og
1 løsning

Java applet i Microsoft Sharepoint

Jeg har forsøgt at indsætte en java-applet på en webside i Microsoft Sharepoint.

Men Java bliver ved med at sige at den ikke kan finde mine class-filer :-(

Det jeg har gjort, er at oprette et dokumenbibliotek ved navn "bin" og deri har jeg lagt applet/class-filerne.

Jeg har så indsat en webdel (Webdelen indholdsredigering / CEWP) på min Sharepoint-side, hvori jeg har indsat følgende kode, der burde resultere i appletten på siden:
<applet code="bin/Matador.class" width=400 height=300>

For at udelukket at det kan være et rettigheds-problem i Sharepoint, har jeg tilladt anonym adgang til bin-dokumentbiblioteket.

Når jeg nu viser siden, viser den ganske rigtigt en 400x300 pixel applet, men den er bare hvid, og har teksten "Error. Click for details"

Når jeg klikker på details, får jeg vist følgende fejlbesked:

Java Plug-in 1.6.0_20
Using JRE version 1.6.0_20-b02 Java HotSpot(TM) Client VM
User home directory = \\profilserver\redirect$\admin
----------------------------------------------------
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>
----------------------------------------------------



load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
load: class https://minserver.dk/sharepoint/test/bin/Matador.class not found.
java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: open HTTP connection failed:https://minserver/dk/sharepoint/test/bin/Matador/class.class
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    ... 7 more
Exception: java.lang.ClassNotFoundException: https:..minserver.dk.sharepoint.test.bin.Matador.class
java.lang.NoClassDefFoundError: bin/Matador (wrong name: Matador)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.NoClassDefFoundError: bin/Matador (wrong name: Matador)
java.lang.NoClassDefFoundError: bin/Matador (wrong name: Matador)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.NoClassDefFoundError: bin/Matador (wrong name: Matador)













Som jeg kan tyde det, siger den at den ikke kan finde Matador.class, men jeg har testet at filen findes på den sti der er angivet i fejlbeskeden.

(Jeg har udskiftet mit server-navn til minserver.dk ovenover, da siden ikke er klar til besøgende endnu, men princippet er jo det samme.)
Avatar billede arne_v Ekspert
30. september 2010 - 19:09 #1
Kan du hente class filen hvis du angiver den URL i browser?

Hvis nej - saa test fremover om det virker med browser - det er hurtigere.

Nu kender jeg ikke SharePoint men hvis bin dir er et dir til .NET assemblies, saa forhindrer ASP.NET sikkert at der kan downloades filer derfra af sikkerhedsmaessige grunde.

Saa det var relevant at proeve at flytte .class filen op fra bin dir til /sharepoint/test.
Avatar billede arne_v Ekspert
30. september 2010 - 19:10 #2
Hvis den applet skal udvikle sig til noget lidt stoerre med flere class filer, saa boer du pakke dem i en jar fil.
Avatar billede Charity Nybegynder
30. september 2010 - 19:13 #3
Der er flere class-filer, men det er ikke mig der leverer appletten, så jeg kan ikke selv lave det til en .jar.
Jeg skal bare få det til at virke ;-)

bin er bare et navn jeg har valgt, det kunne lige så godt have været applet, data eller noget andet.

Hvis jeg indsætter URL'en til class-filen i browseren, kan jeg godt hente den, så URL'en burde være korrekt.
Avatar billede arne_v Ekspert
30. september 2010 - 19:24 #4
Hm.

Nu kan jeg se at det er en HTTPS URL.

Virker det med HTTP?
Avatar billede arne_v Ekspert
30. september 2010 - 19:25 #5
Du kan godt selv pakke flere class filer til en jar fil uden at have adgang til Java koden.

Men glem det indtil det virker.
Avatar billede Charity Nybegynder
30. september 2010 - 19:29 #6
Hmm HTTP/HTTPS havde jeg ikke tænkt på, men det gør desværre ingen forskel :-(
Avatar billede arne_v Ekspert
01. oktober 2010 - 05:00 #7
Jan du se i serversn log fil hvilken request der sendes til server og hvilken status kode serveren svarer med?
Avatar billede Charity Nybegynder
17. oktober 2010 - 08:41 #8
Jeg fik forresten endelig løst problemet.

Løsningen var ikke at bruge en "Webdelen indholdsredigering" og indsætte applet-koden deri, men i stedet at bruge "Webdelen sidevisning" og vise en html-fil i samme mappe som applet-filerne, hvor html-filen så indeholdt applet-koden.

Webdelen sidevisning er stort set bare en iFrame, og det virkede!

Så i sidste ende var der åbenbart ikke noget galt med selve appletten, det var bare Sharepoint der ikke kunne håndtere koden direkte, den skulle "mellemlande" i en html-fil.
Avatar billede Charity Nybegynder
17. oktober 2010 - 08:42 #9
Men jeg vil gerne dele points med arne_v, for de gode forslag til hvordan jeg kunne løse problemet.
- jeg mangler bare et svar at tildele points :-)
Avatar billede arne_v Ekspert
17. oktober 2010 - 15:56 #10
ok
Avatar billede arne_v Ekspert
20. november 2010 - 01:18 #11
så mangler du bare faktisk at acceptere og fordele point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester