288 const char* verstr = Arguments::get_property("jdk.util.jar.version");
289 bool is_multi_ver = (multi_ver == NULL ||
290 strcmp(multi_ver, "true") == 0 ||
291 strcmp(multi_ver, "force") == 0) &&
292 is_multiple_versioned(THREAD);
293 // command line version setting
294 int version = 0;
295 const int base_version = 8; // JDK8
296 int cur_ver = JDK_Version::current().major_version();
297 if (verstr != NULL) {
298 version = atoi(verstr);
299 if (version < base_version || version > cur_ver) {
300 is_multi_ver = false;
301 // print out warning, do not use assertion here since it will continue to look
302 // for proper version.
303 warning("JDK%d is not supported in multiple version jars", version);
304 }
305 }
306
307 if (is_multi_ver) {
308 int n;
309 char entry_name[JVM_MAXPATHLEN];
310 if (version > 0) {
311 n = jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", version, name);
312 entry_name[n] = '\0';
313 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
314 if (buffer == NULL) {
315 warning("Could not find %s in %s, try to find highest version instead", entry_name, _zip_name);
316 }
317 }
318 if (buffer == NULL) {
319 for (int i = cur_ver; i >= base_version; i--) {
320 n = jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", i, name);
321 entry_name[n] = '\0';
322 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
323 if (buffer != NULL) {
324 break;
325 }
326 }
327 }
328 }
329 }
330 return buffer;
331 }
332
333 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
334 assert(DumpSharedSpaces, "called only at dump time");
335 if (_multi_versioned != _unknown) {
336 return (_multi_versioned == _yes) ? true : false;
337 }
338 jint size;
339 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
340 if (buffer != NULL) {
341 char* p = buffer;
|
288 const char* verstr = Arguments::get_property("jdk.util.jar.version");
289 bool is_multi_ver = (multi_ver == NULL ||
290 strcmp(multi_ver, "true") == 0 ||
291 strcmp(multi_ver, "force") == 0) &&
292 is_multiple_versioned(THREAD);
293 // command line version setting
294 int version = 0;
295 const int base_version = 8; // JDK8
296 int cur_ver = JDK_Version::current().major_version();
297 if (verstr != NULL) {
298 version = atoi(verstr);
299 if (version < base_version || version > cur_ver) {
300 is_multi_ver = false;
301 // print out warning, do not use assertion here since it will continue to look
302 // for proper version.
303 warning("JDK%d is not supported in multiple version jars", version);
304 }
305 }
306
307 if (is_multi_ver) {
308 char entry_name[JVM_MAXPATHLEN];
309 if (version > 0) {
310 jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", version, name);
311 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
312 if (buffer == NULL) {
313 warning("Could not find %s in %s, try to find highest version instead", entry_name, _zip_name);
314 }
315 }
316 if (buffer == NULL) {
317 for (int i = cur_ver; i >= base_version; i--) {
318 jio_snprintf(entry_name, sizeof(entry_name), "META-INF/versions/%d/%s", i, name);
319 buffer = open_entry((const char*)entry_name, filesize, false, CHECK_NULL);
320 if (buffer != NULL) {
321 break;
322 }
323 }
324 }
325 }
326 }
327 return buffer;
328 }
329
330 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
331 assert(DumpSharedSpaces, "called only at dump time");
332 if (_multi_versioned != _unknown) {
333 return (_multi_versioned == _yes) ? true : false;
334 }
335 jint size;
336 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
337 if (buffer != NULL) {
338 char* p = buffer;
|