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, 102107👍, 1💬
Popular Posts:
What Is junit-3.8.1.jar? junit-3.8.1.jar is the version 3.8.1 of JUnit JAR library file. JUnit is a ...
JDK 11 jdk.internal.vm.compiler .jmodis the JMOD file for JDK 11 Internal VM Compiler module. JDK 11...
Java Architecture for XML Binding (JAXB) is a Java API that allows Java developers to map Java class...
What Is jsse.jar (JDK 6) Java Secure Socket Extension? jsse.jar, Java Secure Socket Extension, is Ja...
JDK 8 jconsole.jar is the JAR file for JDK 8 JConsole, which is a graphical monitoring tool to monit...