Re: SplashScreen-Image and Libraries
On 2007-11-27 20:17:35 -0800, Jason Cavett <jason.cavett@gmail.com> said:
On Nov 27, 10:59 pm, Knute Johnson <nos...@rabbitbrush.frazmtn.com>
wrote:
Jason Cavett wrote:
I am trying to use the SplashScreen feature in Java 6, and it works
when I use the -splash parameter passed to the JVM. However, when I
try to use the MANIFEST file, it doesn't seem to work correctly. I
think this has to do with the fact that the image I am trying to
access is within another directory (it's specifically in a library
that has been included in the project's classpath). Here is my
MANIFEST file:
Manifest-Version: 1.0
Main-Class: myproject.Main
SplashScreen-Image: "resources/icons/misc_icons/Title Screen.png"
Class-Path: lib/Project_Resources.jar
resources/icons/misc_icons/Title Screen.png is found within the
Project_Resources.jar. I have tried moving the Class-Path variable
before SplashScreen-Image but that does not seem to help the problem.
Does anybody have any suggestions? Thanks
How can you have a Class-Path: of lib/Project_Resources.jar? Is lib in
the project jar? I don't think you can do that. Of course I could be
totally confused :-).
--
Knute Johnson
email s/nospam/knute/
Ah, yes.../lib is contained within the project JAR. Something like
this...
Project.jar
- compiled.code.packages.and.stuff
- lib
- Project_Resources.jar
There is a configuration file, as well as a C++ launcher to read that
configuration file outside of the Project.jar. The C++ launcher was
created so a splash screen could be shown, but now that Java does it,
I think I can get rid of the C++ launcher if I can figure out this
problem.
The built-in classloaders in general can't look inside JARs that are
inside JARs. Your Class-Path attribute instead specifies
Project_Resources.jar in the directory lib in the same directory the
Project.jar is in, like so:
foo/
foo/Project.jar
foo/lib/
foo/lib/Project_Resources.jar
It's not terribly hard to write your own classloader that can look
inside a JAR for JARs, but it won't be availalble until after the
splashscreen-displaying code in the JRE has already run. You'll have
to restructure your packaging to use the built-in splash screen.
-O