Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ressourcen aus jar archiv laden

0 views
Skip to first unread message

Jan Luehr

unread,
Jan 4, 2003, 7:48:45 AM1/4/03
to
ja hallo erstmal,...

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

Ulf Jaehrig

unread,
Jan 4, 2003, 12:16:26 PM1/4/03
to
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

Bis denne,
Ulf

--
"Houston, Tranquillity Base here. The Eagle has landed."
-- Neil Armstrong

Jan Luehr

unread,
Jan 4, 2003, 1:33:17 PM1/4/03
to
ja hallo erstmal,...

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

Ulf Jaehrig

unread,
Jan 5, 2003, 5:36:13 AM1/5/03
to
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.

Bis denne,
Ulf

--
"Two sure ways to tell a sexy male; the first is, he has a bad memory.
I forget the second."

Jan Luehr

unread,
Jan 5, 2003, 8:37:51 AM1/5/03
to
ja hallo erstmal,...

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

Ulf Jaehrig

unread,
Jan 5, 2003, 9:29:21 AM1/5/03
to
Hallo,

> 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

0 new messages