RFR: 8067951: System.loadLibrary cannot find library when path contains quoted entry
Ivan Gerasimov
ivan.gerasimov at oracle.com
Sat Jan 3 17:39:21 UTC 2015
On 03.01.2015 11:50, Alan Bateman wrote:
> On 26/12/2014 10:02, Ivan Gerasimov wrote:
>> Hi!
>>
>> I changed my mind about handling only entirely quoted entries in PATH.
>> The webrev was updated.
>>
>> Now, on Windows paths with quoted parts are supported.
>> If the quoted fragment of the path contains the delimiter -- ';', it
>> will be preserved as a part of the path.
>>
>> This is consistent with how Windows command prompt resolves PATH.
>>
>> The regression test was extended to cover new functionality.
>>
>> The webrev was updated in place:
>> http://cr.openjdk.java.net/~igerasim/8067951/2/webrev/
>>
> I assume it can't be very common to quote individual elements in this
> manner, otherwise we would have had bug reports on this many years ago.
Some applications add their paths to PATH quoted, but these paths are
not very common locations to load dlls from.
In the blog referenced earlier I saw this comment: "Turned out the
DirectX SDK inserted its Utilities\Bin\x86 folder at the start of my
PATH and used quotes."
> I agree we should probably support this and the approach in your
> updated webrev looks reasonable to me. One thing to consider is
> refactoring it so that the Windows specific handling is the Windows
> implementation of ClassLoaderHelper rather than in initializePaths.
>
Currently, there are tree variants of ClassLoaderHelper: for Windows,
for Unix and for MacOS.
We have to either duplicate code in Unix and MacOS realizations, or
introduce another Helper class for initializing paths only, which would
have only two realizations: for Windows and all Unixes.
I would choose the second approach.
What would you suggest?
Sincerely yours,
Ivan
More information about the core-libs-dev
mailing list