ich versuche eine Ressource aus einem jar archiv - auf das ich, rein
sinnig gesehen zugreifen können sollte, zuzugreifen.
Code:
pwd = new File(new
URI(ClassLoader.getSystemClassLoader().getResource("wb/"+ name
+".pwd").toString()));
dazu meldet der mozilla 1.0.0 (sun 1.4.0 plugin) (linux)
Leider mit geringe Erfolg. Der mozilla meint in der Java-Konsole dazu:
java.security.PrivilegedActionException:
java.lang.reflect.InvocationTargetException
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:144)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin.liveconnect.SecureInvocation.CallMethod(SecureInvocation.java:123)
at sun.plugin.navig.motif.AThread.handleRequest(Native Method)
at sun.plugin.navig.motif.AThread.JNIHandleLoop(AThread.java:35)
at sun.plugin.navig.motif.AThread.run(AThread.java:27)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:505)
... 7 more
Caused by: java.lang.NullPointerException
at pwdapp.check(pwdapp.java:26)
... 12 more
Hmm. Anscheind scheint a) Das Applet nicht auf ihr jar zugreifen zu
können
oder b) Das Applet versucht die Datei von woanders her zu laden.
Scheinbar schon der Classloader zu sterben, dann dies nichts sagt:
System.err.println("URI: " +
ClassLoader.getSystemClassLoader().getRessource("wb/+name" +
".pwd").toString());
Nicht einmal URI...
Wie kann ich das besser machen?
Keep smiling
yanosz
--
GPG Key avialable at: www.luehr.mynetcologne.de/public_key.asc
> Wie kann ich das besser machen?
Lies Dir dazu mal das hier durch:
http://www.javaworld.com/javaworld/javaqa/2002-11/02-qa-1122-resources.html
Bis denne,
Ulf
--
"Houston, Tranquillity Base here. The Eagle has landed."
-- Neil Armstrong
Ulf Jaehrig wrote:
> Hallo,
>
>> Wie kann ich das besser machen?
>
> Lies Dir dazu mal das hier durch:
>
http://www.javaworld.com/javaworld/javaqa/2002-11/02-qa-1122-resources.html
das hat mich ein wenig weitergebracht, aber nun hänge ich hier:
URL pwd_url = me.getResource(name + "pwd");
URL pwi_url = me.getResource(name + "pwi");
URI pwd_uri = new URI(pwd_url.toString());
URI pwi_uri = new URI(pwi_url.toString());
System.err.println(pwd_uri + "\n" + pwi_uri);
System.err.println(pwd_url + "\n" + pwi_url);
pwi = new File(pwi_uri);
pwd = new File(pwd_uri);
System.err.println("Soweit fertig");
Alles funktioniert wunderbar, bist ich versuche die Files zu erzeugen.
Dann will er das nicht mehr machen. Irgendwie habe ich aber das Gefühl,
dass die URIs für die files nicht so aussehen, wie sie aussehen
sollten. Woran liegt das?
Keep smiling
yanosz
java.security.PrivilegedActionException:
java.lang.reflect.InvocationTargetException
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin.liveconnect.SecureInvocation$2.run(SecureInvocation.java:144)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.plugin.liveconnect.SecureInvocation.CallMethod(SecureInvocation.java:123)
at sun.plugin.navig.motif.AThread.handleRequest(Native Method)
at sun.plugin.navig.motif.AThread.JNIHandleLoop(AThread.java:35)
at sun.plugin.navig.motif.AThread.run(AThread.java:27)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
sun.plugin.liveconnect.PrivilegedCallMethodAction.run(SecureInvocation.java:505)
... 7 more
Caused by: java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.<init>(File.java:321)
at org.solinger.cracklib.Packer.<init>(Packer.java:65)
at pwdapp.check(pwdapp.java:35)
... 12 more
> URL pwd_url = me.getResource(name + "pwd");
Da sollte dann eine jar-URL herauskommen, wenn die Resource aus dem .jar
kommt. Ich weiss nicht, ob Du die so einfach in eine URI für ein File
umwandeln kannst. Ich habe das zwar noch nie gebraucht, aber zumindest laut
Docu brauchst Du dort auch eine file: URI
> pwi = new File(pwi_uri);
Wofür brauchst Du das File? Schreiben darfst Du ja eh nicht. Und wenn Du die
Resource lesen willst, dann sollte doch ein "getResourceAsStream" einfacher
sein.
Bis denne,
Ulf
--
"Two sure ways to tell a sexy male; the first is, he has a bad memory.
I forget the second."
Ulf Jaehrig wrote:
> Hallo,
>
>> URL pwd_url = me.getResource(name + "pwd");
>
> Da sollte dann eine jar-URL herauskommen, wenn die Resource aus dem
> .jar kommt. Ich weiss nicht, ob Du die so einfach in eine URI für ein
> File umwandeln kannst. Ich habe das zwar noch nie gebraucht, aber
> zumindest laut Docu brauchst Du dort auch eine file: URI
>
>> pwi = new File(pwi_uri);
>
> Wofür brauchst Du das File? Schreiben darfst Du ja eh nicht. Und wenn
> Du die Resource lesen willst, dann sollte doch ein
> "getResourceAsStream" einfacher sein.
ich habe eine lib, die auf dem Random-Access File aufbaut. Ich kann
natürlich eine - auf eine, byte Array basierende Klasse implemnetieren,
jedoch wäre das in gewisser Hinsicht ein ägerlicher Aufwand.
Keep smiling
yanosz
> ich habe eine lib, die auf dem Random-Access File aufbaut. Ich kann
> natürlich eine - auf eine, byte Array basierende Klasse implemnetieren,
> jedoch wäre das in gewisser Hinsicht ein ägerlicher Aufwand.
Ahja. Und das Random-Access File liegt im Jar?
Hmmm, ich behaupte jetzt erst mal, das Du auf eine jar-Resource nicht per
RandomAccess zugreifen kannst (wenn die Aussage nicht stimmt, lasse ich
mich gerne eines besseren belehren). In dem Fall würde Dir, wenn Du nicht
auf Streams "zurückfallen" willst, also nichts anderes übrigbleiben, als
die Resource in ein tmp-File zu kopieren und auf das tmp-File dann per
RandomAccess zuzugreifen.
Da Du allerdings das ganze in einem Applet verwenden willst, müsstest Du
dann zusätzlich (um das tmp File erzeugen zu dürfen) Dein Applet signieren.
Bis denne,
Ulf
--
Don't get suckered in by the comments -- they can be terribly
misleading. Debug only code.
-- Dave Storer