Hi !
Featured games (84)
games approved by the League of Dukes
Games in Showcase (603)
Games in Android Showcase (171)
games submitted by our members
Games in WIP (651)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  A Game in one jar file  (Read 1985 times)
0 Members and 1 Guest are viewing this topic.
Offline sir_wojciech

Junior Newbie

« Posted 2005-06-29 09:14:58 »

I've wiritten a very simple game using jogl, and I won't to put all the files in one jar (resources, jogl classes, my classes, jogl natives), so there's no playing with jre needed for the user. My game loads classes and resources correctly from the jar, but the jre doesn't see the natives? Is there a solution?

Thanks in advance!
Offline Alan_W

JGO Knight

Medals: 8
Projects: 3

Java tames rock!

« Reply #1 - Posted 2005-06-29 09:21:05 »

You could write platform specific installers to unpack the files.  Alternatively you could use Webstart.  The native dll's still have to go in separate jars, but the user only has to only click on a link to get the whole lot to load.

Time flies like a bird. Fruit flies like a banana.
Offline sir_wojciech

Junior Newbie

« Reply #2 - Posted 2005-06-29 09:26:22 »

What about -Djava.libarypath how can I set it for a jar, maybe an example...
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Alan_W

JGO Knight

Medals: 8
Projects: 3

Java tames rock!

« Reply #3 - Posted 2005-06-29 09:36:58 »

I don't think you can set it in the manifest.

This might be worth trying, although you still need to know where the dlls are stored.  There's some code at the bottom.  No clue whether it works though.

Also see thread

Time flies like a bird. Fruit flies like a banana.
Offline sir_wojciech

Junior Newbie

« Reply #4 - Posted 2005-06-29 10:12:44 »

I tried the second thread with putting the libs in the same folder as jogl.jar and my game jar and the jvm says it cant find main class.
Offline Alan_W

JGO Knight

Medals: 8
Projects: 3

Java tames rock!

« Reply #5 - Posted 2005-06-29 10:26:33 »

That is something that needs to go in the manifest


Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2_08-b03 (Sun Microsystems Inc.)
Main-Class: pianoplayer.Main

For example: Netbeans IDE doesn't add the Main-Class attribute for you.  You need to do it yourself.

Time flies like a bird. Fruit flies like a banana.
Offline pepijnve

Junior Devvie

Java games rock!

« Reply #6 - Posted 2005-06-29 12:11:30 »

Placing the libraries next to the jar works because on some platforms the working directory is in the default search path for dynamic libraries. IIRC under linux for instance java.library.path gets initialised to the current value of the LD_LIBRARY_PATH environment variable which may or may not contain '.'.
Here's a wild idea that might be useful. The main problem that can't really be worked around is that the underlying OS can't load dynamic libraries that are located inside a jar. So what you could do is pack the library inside your jar and extract it to some temporary location just before you want to load it.
In pseudo code you could do the following
// Find the library in the jar
String libName = "myLibrary";
String sysLibName = System.mapLibraryName(libName);
InputStream libIS = getClass().getClassLoader().getResourceAsStream(sysLibName);

// Create a temp file
File tempFile = new File(System.getProperty("") + File.seperator + sysLibName);
FileOutputStream tempFileOS = new FileOutputStream(tempFile);

// Copy from libIS to tempFileOS

// Load the lib

Then of course jogl would have to ignore the fact that it can't load the library itself. Another potential pitfall is that mapLibraryName will probably return for both linux and solaris for instance, so you would need a way to distiguish between the two (possible using the, os.arch, os.version system properties). This stuff is untested, unproven and there are probably many many other issues with this that I'm missing, but it's worth a try Cheesy
Offline sir_wojciech

Junior Newbie

« Reply #7 - Posted 2005-06-29 12:44:50 »

Ok problem fixed I had to add to manifest:
Class-Path: ./jogl.jar
Thanks anyways!
Pages: [1]
  ignore  |  Print  
You cannot reply to this message, because it is very, very old.

SHC (11 views)
2015-08-01 03:58:20

Jesse (17 views)
2015-07-29 04:35:27

Riven (38 views)
2015-07-27 16:38:00

Riven (19 views)
2015-07-27 15:35:20

Riven (22 views)
2015-07-27 12:26:13

Riven (12 views)
2015-07-27 12:23:39

BurntPizza (32 views)
2015-07-25 00:14:37

BurntPizza (43 views)
2015-07-24 22:06:39

BurntPizza (25 views)
2015-07-24 06:06:53

NoxInc (31 views)
2015-07-22 22:16:53
List of Learning Resources
by gouessej
2015-07-09 11:29:36

How Do I Expand My Game?
by bashfrog
2015-06-14 11:34:43

List of Learning Resources
by PocketCrafter7
2015-05-31 05:37:30

Intersection Methods
by Roquen
2015-05-29 08:19:33

List of Learning Resources
by SilverTiger
2015-05-05 10:20:32

How to: JGO Wiki
by Mac70
2015-02-17 20:56:16

2D Dynamic Lighting
by ThePixelPony
2015-01-01 20:25:42

How do I start Java Game Development?
by gouessej
2014-12-27 19:41:21 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!