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 11 jdk.compiler.jmod - Compiler Tool
JDK 11 jdk.compiler.jmod is the JMOD file for JDK 11 Compiler tool, which can be invoked by the "javac" command.
JDK 11 Compiler tool compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.compiler.jmod.
JDK 11 Compiler tool compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.
JDK 11 Compiler source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.compiler.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ com/sun/tools/sjavac/comp/SjavacImpl.java
/* * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package com.sun.tools.sjavac.comp; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Stream; import com.sun.tools.javac.file.JavacFileManager; import com.sun.tools.javac.main.Main; import com.sun.tools.javac.main.Main.Result; import com.sun.tools.javac.util.Context; import com.sun.tools.sjavac.JavacState; import com.sun.tools.sjavac.Log; import com.sun.tools.sjavac.Module; import com.sun.tools.sjavac.ProblemException; import com.sun.tools.sjavac.Source; import com.sun.tools.sjavac.Transformer; import com.sun.tools.sjavac.Util; import com.sun.tools.sjavac.options.Option; import com.sun.tools.sjavac.options.Options; import com.sun.tools.sjavac.options.SourceLocation; import com.sun.tools.sjavac.server.Sjavac; import java.io.UncheckedIOException; import javax.tools.JavaFileManager; /** * The sjavac implementation that interacts with javac and performs the actual * compilation. * * <p><b>This is NOT part of any supported API. * If you write code that depends on this, you do so at your own risk. * This code and its internal interfaces are subject to change or * deletion without notice.</b> */ public class SjavacImpl implements Sjavac { @Override public Result compile(String[] args) { Options options; try { options = Options.parseArgs(args); } catch (IllegalArgumentException e) { Log.error(e.getMessage()); return Result.CMDERR; } if (!validateOptions(options)) return Result.CMDERR; if (srcDstOverlap(options.getSources(), options.getDestDir())) { return Result.CMDERR; } if (!createIfMissing(options.getDestDir())) return Result.ERROR; Path stateDir = options.getStateDir(); if (stateDir != null && !createIfMissing(options.getStateDir())) return Result.ERROR; Path gensrc = options.getGenSrcDir(); if (gensrc != null && !createIfMissing(gensrc)) return Result.ERROR; Path hdrdir = options.getHeaderDir(); if (hdrdir != null && !createIfMissing(hdrdir)) return Result.ERROR; if (stateDir == null) { // Prepare context. Direct logging to our byte array stream. Context context = new Context(); StringWriter strWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(strWriter); com.sun.tools.javac.util.Log.preRegister(context, printWriter); JavacFileManager.preRegister(context); // Prepare arguments String[] passThroughArgs = Stream.of(args) .filter(arg -> !arg.startsWith(Option.SERVER.arg)) .toArray(String[]::new); // Compile Result result = new Main("javac", printWriter).compile(passThroughArgs, context); // Process compiler output (which is always errors) printWriter.flush(); Util.getLines(strWriter.toString()).forEach(Log::error); // Clean up JavaFileManager fileManager = context.get(JavaFileManager.class); if (fileManager instanceof JavacFileManager) { try { ((JavacFileManager) fileManager).close(); } catch (IOException es) { throw new UncheckedIOException(es); } } return result; } else { // Load the prev build state database. JavacState javac_state = JavacState.load(options); // Setup the suffix rules from the command line. Map<String, Transformer> suffixRules = new HashMap<>(); // Handling of .java-compilation suffixRules.putAll(javac_state.getJavaSuffixRule()); // Handling of -copy and -tr suffixRules.putAll(options.getTranslationRules()); // All found modules are put here. Map<String,Module> modules = new HashMap<>(); // We start out in the legacy empty no-name module. // As soon as we stumble on a module-info.java file we change to that module. Module current_module = new Module("", ""); modules.put("", current_module); try { // Find all sources, use the suffix rules to know which files are sources. Map<String,Source> sources = new HashMap<>(); // Find the files, this will automatically populate the found modules // with found packages where the sources are found! findSourceFiles(options.getSources(), suffixRules.keySet(), sources, modules, current_module, options.isDefaultPackagePermitted(), false); if (sources.isEmpty()) { Log.error("Found nothing to compile!"); return Result.ERROR; } // Create a map of all source files that are available for linking. Both -src and // -sourcepath point to such files. It is possible to specify multiple // -sourcepath options to enable different filtering rules. If the // filters are the same for multiple sourcepaths, they may be concatenated // using :(;). Before sending the list of sourcepaths to javac, they are // all concatenated. The list created here is used by the SmartFileWrapper to // make sure only the correct sources are actually available. // We might find more modules here as well. Map<String,Source> sources_to_link_to = new HashMap<>(); List<SourceLocation> sourceResolutionLocations = new ArrayList<>(); sourceResolutionLocations.addAll(options.getSources()); sourceResolutionLocations.addAll(options.getSourceSearchPaths()); findSourceFiles(sourceResolutionLocations, Collections.singleton(".java"), sources_to_link_to, modules, current_module, options.isDefaultPackagePermitted(), true); // Add the set of sources to the build database. javac_state.now().flattenPackagesSourcesAndArtifacts(modules); javac_state.now().checkInternalState("checking sources", false, sources); javac_state.now().checkInternalState("checking linked sources", true, sources_to_link_to); javac_state.setVisibleSources(sources_to_link_to); int round = 0; printRound(round); // If there is any change in the source files, taint packages // and mark the database in need of saving. javac_state.checkSourceStatus(false); // Find all existing artifacts. Their timestamp will match the last modified timestamps stored // in javac_state, simply because loading of the JavacState will clean out all artifacts // that do not match the javac_state database. javac_state.findAllArtifacts(); // Remove unidentified artifacts from the bin, gensrc and header dirs. // (Unless we allow them to be there.) // I.e. artifacts that are not known according to the build database (javac_state). // For examples, files that have been manually copied into these dirs. // Artifacts with bad timestamps (ie the on disk timestamp does not match the timestamp // in javac_state) have already been removed when the javac_state was loaded. if (!options.areUnidentifiedArtifactsPermitted()) { javac_state.removeUnidentifiedArtifacts(); } // Go through all sources and taint all packages that miss artifacts. javac_state.taintPackagesThatMissArtifacts(); // Check recorded classpath public apis. Taint packages that depend on // classpath classes whose public apis have changed. javac_state.taintPackagesDependingOnChangedClasspathPackages(); // Now clean out all known artifacts belonging to tainted packages. javac_state.deleteClassArtifactsInTaintedPackages(); // Copy files, for example property files, images files, xml files etc etc. javac_state.performCopying(Util.pathToFile(options.getDestDir()), suffixRules); // Translate files, for example compile properties or compile idls. javac_state.performTranslation(Util.pathToFile(gensrc), suffixRules); // Add any potentially generated java sources to the tobe compiled list. // (Generated sources must always have a package.) Map<String,Source> generated_sources = new HashMap<>(); Source.scanRoot(Util.pathToFile(options.getGenSrcDir()), Util.set(".java"), Collections.emptyList(), Collections.emptyList(), generated_sources, modules, current_module, false, true, false); javac_state.now().flattenPackagesSourcesAndArtifacts(modules); // Recheck the the source files and their timestamps again. javac_state.checkSourceStatus(true); // Now do a safety check that the list of source files is identical // to the list Make believes we are compiling. If we do not get this // right, then incremental builds will fail with subtility. // If any difference is detected, then we will fail hard here. // This is an important safety net. javac_state.compareWithMakefileList(Util.pathToFile(options.getSourceReferenceList())); // Do the compilations, repeatedly until no tainted packages exist. boolean again; // Collect the name of all compiled packages. Set<String> recently_compiled = new HashSet<>(); boolean[] rc = new boolean[1]; CompilationService compilationService = new CompilationService(); do { if (round > 0) printRound(round); // Clean out artifacts in tainted packages. javac_state.deleteClassArtifactsInTaintedPackages(); again = javac_state.performJavaCompilations(compilationService, options, recently_compiled, rc); if (!rc[0]) { Log.debug("Compilation failed."); break; } if (!again) { Log.debug("Nothing left to do."); } round++; } while (again); Log.debug("No need to do another round."); // Only update the state if the compile went well. if (rc[0]) { javac_state.save(); // Reflatten only the artifacts. javac_state.now().flattenArtifacts(modules); // Remove artifacts that were generated during the last compile, but not this one. javac_state.removeSuperfluousArtifacts(recently_compiled); } return rc[0] ? Result.OK : Result.ERROR; } catch (ProblemException e) { // For instance make file list mismatch. Log.error(e.getMessage()); Log.debug(e); return Result.ERROR; } catch (Exception e) { Log.error(e); return Result.ERROR; } } } @Override public void shutdown() { // Nothing to clean up } private static boolean validateOptions(Options options) { String err = null; if (options.getDestDir() == null) { err = "Please specify output directory."; } else if (options.isJavaFilesAmongJavacArgs()) { err = "Sjavac does not handle explicit compilation of single .java files."; } else if (!options.getImplicitPolicy().equals("none")) { err = "The only allowed setting for sjavac is -implicit:none"; } else if (options.getSources().isEmpty() && options.getStateDir() != null) { err = "You have to specify -src when using --state-dir."; } else if (options.getTranslationRules().size() > 1 && options.getGenSrcDir() == null) { err = "You have translators but no gensrc dir (-s) specified!"; } if (err != null) Log.error(err); return err == null; } private static boolean srcDstOverlap(List<SourceLocation> locs, Path dest) { for (SourceLocation loc : locs) { if (isOverlapping(loc.getPath(), dest)) { Log.error("Source location " + loc.getPath() + " overlaps with destination " + dest); return true; } } return false; } private static boolean isOverlapping(Path p1, Path p2) { p1 = p1.toAbsolutePath().normalize(); p2 = p2.toAbsolutePath().normalize(); return p1.startsWith(p2) || p2.startsWith(p1); } private static boolean createIfMissing(Path dir) { if (Files.isDirectory(dir)) return true; if (Files.exists(dir)) { Log.error(dir + " is not a directory."); return false; } try { Files.createDirectories(dir); } catch (IOException e) { Log.error("Could not create directory: " + e.getMessage()); return false; } return true; } /** Find source files in the given source locations. */ public static void findSourceFiles(List<SourceLocation> sourceLocations, Set<String> sourceTypes, Map<String,Source> foundFiles, Map<String, Module> foundModules, Module currentModule, boolean permitSourcesInDefaultPackage, boolean inLinksrc) throws IOException { for (SourceLocation source : sourceLocations) { source.findSourceFiles(sourceTypes, foundFiles, foundModules, currentModule, permitSourcesInDefaultPackage, inLinksrc); } } private static void printRound(int round) { Log.debug("****************************************"); Log.debug("* Round " + round + " *"); Log.debug("****************************************"); } }
⏎ com/sun/tools/sjavac/comp/SjavacImpl.java
Or download all of them as a single archive file:
File name: jdk.compiler-11.0.1-src.zip File size: 1347269 bytes Release date: 2018-11-04 Download
⇒ JDK 11 jdk.crypto.cryptoki.jmod - Crypto KI Module
2020-08-13, 93260👍, 0💬
Popular Posts:
The JMX technology provides the tools for building distributed, Web-based, modular and dynamic solut...
JDK 11 java.security.jgss.jmod is the JMOD file for JDK 11 Security JGSS (Java Generic Security Serv...
What JAR files are required to run dom\Writer.java provided in the Apache Xerces package? 3 JAR file...
Jettison is a collection of Java APIs (like STaX and DOM) which read and write JSON. This allows nea...
What Is HttpComponents httpclient-4.2.2.jar? HttpComponents httpclient-4.2.2.jar is the JAR file for...