Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 java.base.jmod - Base Module
JDK 17 java.base.jmod is the JMOD file for JDK 17 Base module.
JDK 17 Base module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\java.base.jmod.
JDK 17 Base module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Base module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\java.base.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ java/lang/invoke/ProxyClassesDumper.java
/* * Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package java.lang.invoke; import sun.util.logging.PlatformLogger; import java.io.FilePermission; import java.nio.file.Files; import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; /** * Helper class used by InnerClassLambdaMetafactory to log generated classes * * @implNote * <p> Because this class is called by LambdaMetafactory, make use * of lambda lead to recursive calls cause stack overflow. */ final class ProxyClassesDumper { private static final char[] HEX = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; private static final char[] BAD_CHARS = { '\\', ':', '*', '?', '"', '<', '>', '|' }; private static final String[] REPLACEMENT = { "%5C", "%3A", "%2A", "%3F", "%22", "%3C", "%3E", "%7C" }; private final Path dumpDir; @SuppressWarnings("removal") public static ProxyClassesDumper getInstance(String path) { if (null == path) { return null; } try { path = path.trim(); final Path dir = Path.of(path.isEmpty() ? "." : path); AccessController.doPrivileged(new PrivilegedAction<>() { @Override public Void run() { validateDumpDir(dir); return null; } }, null, new FilePermission("<<ALL FILES>>", "read, write")); return new ProxyClassesDumper(dir); } catch (InvalidPathException ex) { PlatformLogger.getLogger(ProxyClassesDumper.class.getName()) .warning("Path " + path + " is not valid - dumping disabled", ex); } catch (IllegalArgumentException iae) { PlatformLogger.getLogger(ProxyClassesDumper.class.getName()) .warning(iae.getMessage() + " - dumping disabled"); } return null; } private ProxyClassesDumper(Path path) { dumpDir = Objects.requireNonNull(path); } private static void validateDumpDir(Path path) { if (!Files.exists(path)) { throw new IllegalArgumentException("Directory " + path + " does not exist"); } else if (!Files.isDirectory(path)) { throw new IllegalArgumentException("Path " + path + " is not a directory"); } else if (!Files.isWritable(path)) { throw new IllegalArgumentException("Directory " + path + " is not writable"); } } public static String encodeForFilename(String className) { final int len = className.length(); StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char c = className.charAt(i); // control characters if (c <= 31) { sb.append('%'); sb.append(HEX[c >> 4 & 0x0F]); sb.append(HEX[c & 0x0F]); } else { int j = 0; for (; j < BAD_CHARS.length; j++) { if (c == BAD_CHARS[j]) { sb.append(REPLACEMENT[j]); break; } } if (j >= BAD_CHARS.length) { sb.append(c); } } } return sb.toString(); } public void dumpClass(String className, final byte[] classBytes) { Path file; try { file = dumpDir.resolve(encodeForFilename(className) + ".class"); } catch (InvalidPathException ex) { PlatformLogger.getLogger(ProxyClassesDumper.class.getName()) .warning("Invalid path for class " + className); return; } try { Path dir = file.getParent(); Files.createDirectories(dir); Files.write(file, classBytes); } catch (Exception ignore) { PlatformLogger.getLogger(ProxyClassesDumper.class.getName()) .warning("Exception writing to path at " + file.toString()); // simply don't care if this operation failed } } }
⏎ java/lang/invoke/ProxyClassesDumper.java
Or download all of them as a single archive file:
File name: java.base-17.0.5-src.zip File size: 8883851 bytes Release date: 2022-09-13 Download
2023-09-26, 44533👍, 1💬
Popular Posts:
Where to find answers to frequently asked questions on Download and Installing of Older Versions? He...
Where to find answers to frequently asked questions on Downloading and Using JDK (Java Development K...
How to download and install mysql-connector-j-8.0.31 .zip?Connector/J Java library is a JDBC Driver ...
How to download and install JDK (Java Development Kit) 1.4? If you want to write Java applications, ...
JDK 11 java.xml.crypto.jmod is the JMOD file for JDK 11 XML (eXtensible Markup Language) Crypto modu...