Hi !
Featured games (84)
games approved by the League of Dukes
Games in Showcase (565)
Games in Android Showcase (151)
games submitted by our members
Games in WIP (606)
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  
  How to disable the loading of installed extensions?  (Read 1712 times)
0 Members and 1 Guest are viewing this topic.
Offline gouessej

« In padded room »

« Posted 2014-03-17 11:55:11 »


As you may know, when you run a Java application, the JVM uses at least 3 classloaders: the bootstrap classloader, the extension classloader and the application classloader (which loads the classes in the classpath). When using JNLP in an applet or in an application, the JVM uses one more classloader. It is even more complicated when using a servlet container or a module system.

This is what I mean by "installed extensions":

I sometimes use Java3D 1.6.0 and I often use JogAmp (especially JOGL and JOAL). Some developers complain about Apple going on shipping an obsolete version of Java3D as an extension which is loaded by default before the version available in the classpath, it obviously causes some conflicts.

As far as I know, there is a property allowing to override the set of directories used to find the extensions to load, this property is called "java.ext.dirs". I've looked at the source code of OpenJDK:

Setting it to "" should solve my problem, the obsolete version of Java3D shouldn't be picked if there is no directory denoted in java.ext.dirs. However, a developer under OS X goes on complaining that it doesn't work but as he hasn't given me any information about the version of OS X and the JVM, I don't know what to do. I can try to reproduce his "bug" on a Mac but if it reproducible only with a particular version of Java and/or OS X, I won't succeed. Please can some Mac OS X users confirm whether this property is honored with OpenJDK and/or Oracle Java? As far as I know, it can be set as a JVM option in command line, in a JNLP file or just very early in the program by calling System.setProperty("java.ext.dirs", "").
Offline princec

« JGO Spiffy Duke »

Medals: 493
Projects: 3
Exp: 16 years

Eh? Who? What? ... Me?

« Reply #1 - Posted 2014-03-17 12:33:24 »

What you do in this situation, is ignore them, until they give you the information you've asked for.

Cas Smiley

Offline gouessej

« In padded room »

« Reply #2 - Posted 2014-03-19 15:23:15 »

I can do it this time but this isn't something new.

If anybody can help me with a recent Mac, let me know.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Online Roquen
« Reply #3 - Posted 2014-03-19 18:10:00 »

Write your own classloader.
Offline gouessej

« In padded room »

« Reply #4 - Posted 2014-03-19 19:29:26 »

I already tried that but then, I need several implementations, depending on which parent classloader is in use. I'm not sure I can instantiate the application classloader with the system classloader as a parent and use it as is. When using JNLP, the "lowest" classloader is a parent of the application classloader not in sun.misc.Launcher which drives this even more complicated. That's why I would be grateful if someone could confirm whether or not setting java.ext.dirs to "" works under Mac OS X 10.9.
Online Roquen
« Reply #5 - Posted 2014-03-19 20:14:52 »

You don't have to defer to a parent.
Offline gouessej

« In padded room »

« Reply #6 - Posted 2014-03-19 21:05:11 »

java.ext.dirs is taken into account if and only if it is set very early as a VM option or as a property in a JNLP file. If you use a "runnable" JAR, rather call Runtime.exec to run a VM with the proper parameters or use a script. Someone else tested on Mavericks. I'll update my Java3D tutorial soon.
Pages: [1]
  ignore  |  Print  
You cannot reply to this message, because it is very, very old.

theagentd (11 views)
2015-03-27 23:08:20

wxwsk8er (52 views)
2015-03-20 15:39:46

Fairy Tailz (46 views)
2015-03-15 21:52:20

Olo (28 views)
2015-03-13 17:51:59

Olo (30 views)
2015-03-13 17:50:51

Olo (38 views)
2015-03-13 17:50:16

Olo (44 views)
2015-03-13 17:47:07

ClaasJG (57 views)
2015-03-10 11:36:42

ClaasJG (41 views)
2015-03-10 11:33:01

Pippogeek (48 views)
2015-03-05 14:36:23
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

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 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!