Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (538)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (601)
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 1847 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.
http://forum.java.sun.com/thread.jspa?threadID=627890&tstart=0

Also see thread
http://192.18.37.44/forums/index.php?topic=4933.0

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

e.g.

1  
2  
3  
4  
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
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
// 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("java.io.tmpdir") + File.seperator + sysLibName);
FileOutputStream tempFileOS = new FileOutputStream(tempFile);

// Copy from libIS to tempFileOS
....

// Load the lib
Runtime.load(tempFile.getAbsolutePath());

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 libjogl.so for both linux and solaris for instance, so you would need a way to distiguish between the two (possible using the os.name, 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.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (29 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (40 views)
2014-12-09 22:41:13

BurntPizza (76 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (50 views)
2014-12-03 16:27:13

CopyableCougar4 (47 views)
2014-11-29 21:32:03

toopeicgaming1999 (114 views)
2014-11-26 15:22:04

toopeicgaming1999 (102 views)
2014-11-26 15:20:36

toopeicgaming1999 (30 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
java-gaming.org 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‑gaming.org
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!