privatevoid run() throws IOException {
StringBuilder imports = new StringBuilder();
StringBuilder use = new StringBuilder();
for (int c = 0; c < CLASSES; c++) {
String simpleName = getSimpleName(c);
String pack = "p";
imports.append("import " + pack + "." + simpleName + ";\n");
use.append(simpleName + " " + simpleName + ";\n");
}
String source = imports.toString() + "public class T {\n" + use.toString() + "}";
ToolBox tb = new ToolBox();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
try (StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null)) {
fm.setLocationFromPaths(StandardLocation.CLASS_OUTPUT, List.of(Paths.get("."))); new JavacTask(tb).sources(source)
.options("-XDshould-stop.ifError=ATTR", "-XDshould-stop.ifNoError=ATTR") //the source is too big for a classfile
.fileManager(new TestJFM(fm))
.run();
}
}
privatebyte[] generateClassFile(String name) throws IOException {
ConstantPool cp = new ConstantPool(new CPInfo[] { new CONSTANT_Utf8_info(""), //0 new CONSTANT_Utf8_info(name.replace(".", "/")), //1 new CONSTANT_Class_info(null, 1), //2 new CONSTANT_Utf8_info("java/lang/Object"), //3 new CONSTANT_Class_info(null, 3), //4
});
ClassFile cf = new ClassFile(0xCAFEBABE, 0, 51,
cp, new AccessFlags(AccessFlags.ACC_ABSTRACT |
AccessFlags.ACC_INTERFACE |
AccessFlags.ACC_PUBLIC), 2, 4, newint[0], new Field[0], new Method[0], new Attributes(cp, new Attribute[0]));
ByteArrayOutputStream baos = new ByteArrayOutputStream(); new ClassWriter().write(cf, baos); return baos.toByteArray();
}
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.11Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-10-01)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.