List of usage examples for org.objectweb.asm ClassWriter visitModule
@Override
public final ModuleVisitor visitModule(final String name, final int access, final String version)
From source file:ModuleInfoGenerator.java
License:Open Source License
public static void main(String[] args) throws Exception { File dest = new File(args[0]); ClassWriter cw = new ClassWriter(0); cw.visit(V9, Opcodes.ACC_MODULE, "module-info", null, null, null); ModuleVisitor mv = cw.visitModule("org.joml", 0, args[1]); mv.visitRequire("java.base", ACC_MANDATED, "9"); mv.visitRequire("jdk.unsupported", ACC_STATIC_PHASE, null); mv.visitExport("org/joml", 0, (String[]) null); mv.visitExport("org/joml/sampling", 0, (String[]) null); mv.visitEnd();/*from ww w . j a va 2 s . co m*/ cw.visitEnd(); FileOutputStream fos = new FileOutputStream(new File(dest, "module-info.class")); fos.write(cw.toByteArray()); fos.close(); }
From source file:org.jacoco.core.analysis.AnalyzerTest.java
License:Open Source License
@Test public void should_ignore_module_info() throws Exception { final ClassWriter cw = new ClassWriter(0); cw.visit(Opcodes.V9, Opcodes.ACC_MODULE, "module-info", null, null, null); cw.visitModule("module", 0, null).visitEnd(); cw.visitEnd();/* w w w.j a v a 2 s. c om*/ final byte[] bytes = cw.toByteArray(); analyzer.analyzeClass(bytes, ""); assertTrue(classes.isEmpty()); }
From source file:org.jacoco.core.internal.instr.ProbeArrayStrategyFactoryTest.java
License:Open Source License
private IProbeArrayStrategy createForModule(int version) { final ClassWriter writer = new ClassWriter(0); writer.visit(version, Opcodes.ACC_MODULE, "module-info", null, null, null); writer.visitModule("module", 0, null).visitEnd(); writer.visitEnd();/*from ww w . jav a 2s .c o m*/ return ProbeArrayStrategyFactory.createFor(0, new ClassReader(writer.toByteArray()), generator); }
From source file:org.moditect.internal.compiler.ModuleInfoCompiler.java
License:Apache License
public static byte[] compileModuleInfo(ModuleDeclaration module, String mainClass, String version) { ClassWriter classWriter = new ClassWriter(0); classWriter.visit(V9, ACC_MODULE, "module-info", null, null, null); int moduleAccess = module.isOpen() ? ACC_SYNTHETIC | ACC_OPEN : ACC_SYNTHETIC; ModuleVisitor mv = classWriter.visitModule(module.getNameAsString(), moduleAccess, version); if (mainClass != null) { mv.visitMainClass(getNameForBinary(mainClass)); }//from ww w . java2s . c o m for (ModuleRequiresStmt requires : module.getNodesByType(ModuleRequiresStmt.class)) { mv.visitRequire(requires.getName().asString(), requiresModifiersAsInt(requires.getModifiers()), null); } for (ModuleExportsStmt export : module.getNodesByType(ModuleExportsStmt.class)) { mv.visitExport(getNameForBinary(export.getNameAsString()), 0, export.getModuleNames().stream().map(Name::toString).toArray(String[]::new)); } for (ModuleProvidesStmt provides : module.getNodesByType(ModuleProvidesStmt.class)) { mv.visitProvide(getNameForBinary(provides.getType()), provides.getWithTypes().stream() .map(ModuleInfoCompiler::getNameForBinary).toArray(String[]::new)); } for (ModuleUsesStmt uses : module.getNodesByType(ModuleUsesStmt.class)) { mv.visitUse(getNameForBinary(uses.getType())); } for (ModuleOpensStmt opens : module.getNodesByType(ModuleOpensStmt.class)) { mv.visitOpen(getNameForBinary(opens.getNameAsString()), 0, opens.getModuleNames().stream().map(Name::toString).toArray(String[]::new)); } mv.visitRequire("java.base", ACC_MANDATED, null); mv.visitEnd(); classWriter.visitEnd(); return classWriter.toByteArray(); }