RFR(M): JDK-8165500: TestJpsJar shouldn't jar all test.classpath directories
Dmitry Samersoff
dmitry.samersoff at oracle.com
Fri Sep 23 10:19:54 UTC 2016
Daniel,
Thank you! I'll fix it.
-Dmitry
On 2016-09-23 12:48, Daniel Fuchs wrote:
> Hi Dmitry,
>
> There's a potential bug here. If two directories in the
> classpath contains two different versions of A.class,
> then the wrong version (the one that comes last) will
> be included in the jar:
>
> LingeredAppForJps::buildJar
>
> 109 for (String path : testClassPath.split(File.pathSeparator)) {
> 110 String classFullName = path + File.separator +
> className + ".class";
> 111 File f = new File(classFullName);
> 112 if (f.exists()) {
> 113 jarArgs.add("-C");
> 114 jarArgs.add(path);
> 115 jarArgs.add(".");
> 116 System.out.println("INFO: scheduled to jar " + path);
> 117 }
> 118 }
>
> To be more exact you should probably go through the list
> in reverse order:
>
> String[] paths = testClassPath.split(File.pathSeparator);
> for (int i = paths.length ; --i >= 0 ; ) {
> String path = paths[i];
> String classFullName = ...;
> ...
> }
>
> or alternatively, keep your loop as it is but break out of it
> as soon as you found the class you're looking for (I don't
> know whether that would be the right solution though, I am
> not familiar with these tests), or yet again keep on looping
> but throw an exception if you encounter the class twice for
> a different path.
>
> best regards,
>
> -- daniel
>
> On 23/09/16 10:01, Dmitry Samersoff wrote:
>> Everybody,
>>
>> Please, review:
>>
>> http://cr.openjdk.java.net/~dsamersoff/JDK-8165500/webrev.02/
>>
>> I refactored the test to improve stability and simplify further
>> debugging.
>>
>> Testing: rbt
>>
>> PS: Diffs is messy, so pleas look at raw files.
>>
>> -Dmitry
>>
>
--
Dmitry Samersoff
Oracle Java development team, Saint Petersburg, Russia
* I would love to change the world, but they won't give me the sources.
More information about the serviceability-dev
mailing list