本文整理汇总了Java中com.sun.tools.classfile.Descriptor.InvalidDescriptor类的典型用法代码示例。如果您正苦于以下问题:Java InvalidDescriptor类的具体用法?Java InvalidDescriptor怎么用?Java InvalidDescriptor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
InvalidDescriptor类属于com.sun.tools.classfile.Descriptor包,在下文中一共展示了InvalidDescriptor类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: readFrom
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
public Element readFrom(InputStream in) throws IOException {
try {
this.in = in;
ClassFile c = ClassFile.read(in);
// read the file header
if (c.magic != 0xCAFEBABE) {
throw new RuntimeException("bad magic number " +
Integer.toHexString(c.magic));
}
cfile.setAttr("magic", "" + c.magic);
int minver = c.minor_version;
int majver = c.major_version;
cfile.setAttr("minver", "" + minver);
cfile.setAttr("majver", "" + majver);
readCP(c);
readClass(c);
return result();
} catch (InvalidDescriptor | ConstantPoolException ex) {
throw new IOException("Fatal error", ex);
}
}
示例2: readClass
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
private void readClass(ClassFile c) throws IOException,
ConstantPoolException,
InvalidDescriptor {
klass = new Element("Class");
cfile.add(klass);
String thisk = c.getName();
klass.setAttr("name", thisk);
AccessFlags af = new AccessFlags(c.access_flags.flags);
klass.setAttr("flags", flagString(af, klass));
if (!"java/lang/Object".equals(thisk)) {
klass.setAttr("super", c.getSuperclassName());
}
for (int i : c.interfaces) {
klass.add(new Element("Interface", "name", getCpString(i)));
}
readFields(c, klass);
readMethods(c, klass);
readAttributesFor(c, c.attributes, klass);
klass.trimToSize();
}
示例3: checkClassFile
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
void checkClassFile(File file)
throws IOException, ConstantPoolException, InvalidDescriptor {
ClassFile classFile = ClassFile.read(file);
ConstantPool constantPool = classFile.constant_pool;
//lets get all the methods in the class file.
for (Method method : classFile.methods) {
for (ElementKey elementKey: aliveRangeMap.keySet()) {
String methodDesc = method.getName(constantPool) +
method.descriptor.getParameterTypes(constantPool).replace(" ", "");
if (methodDesc.equals(elementKey.elem.toString())) {
checkMethod(constantPool, method, aliveRangeMap.get(elementKey));
seenAliveRanges.add(elementKey);
}
}
}
}
示例4: check
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
void check(String dir, String... fileNames)
throws
IOException,
ConstantPoolException,
Descriptor.InvalidDescriptor {
for (String fileName : fileNames) {
ClassFile classFileToCheck = ClassFile.read(new File(dir, fileName));
for (Method method : classFileToCheck.methods) {
if ((method.access_flags.flags & ACC_STRICT) == 0) {
errors.add(String.format(offendingMethodErrorMessage,
method.getName(classFileToCheck.constant_pool),
classFileToCheck.getName()));
}
}
}
}
示例5: run
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
private void run()
throws
IOException,
ConstantPoolException,
InvalidDescriptor,
URISyntaxException {
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
try (StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null)) {
for (String module: modules) {
analyzeModule(fm, module);
}
}
if (errors.size() > 0) {
for (String error: errors) {
System.err.println(error);
}
throw new AssertionError("There are mutable fields, "
+ "please check output");
}
}
示例6: analyzeModule
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
void analyzeModule(StandardJavaFileManager fm, String moduleName)
throws
IOException,
ConstantPoolException,
InvalidDescriptor {
JavaFileManager.Location location =
fm.getLocationForModule(StandardLocation.SYSTEM_MODULES, moduleName);
if (location == null)
throw new AssertionError("can't find module " + moduleName);
for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) {
String className = fm.inferBinaryName(location, file);
int index = className.lastIndexOf('.');
String pckName = index == -1 ? "" : className.substring(0, index);
if (shouldAnalyzePackage(pckName)) {
analyzeClassFile(ClassFile.read(file.openInputStream()));
}
}
}
示例7: readClass
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
private void readClass(ClassFile c) throws IOException,
ConstantPoolException,
InvalidDescriptor {
klass = new Element("Class");
cfile.add(klass);
String thisk = c.getName();
klass.setAttr("name", thisk);
AccessFlags af = new AccessFlags(c.access_flags.flags);
klass.setAttr("flags", flagString(af, klass));
if (!"java/lang/Object".equals(thisk)) {
if (c.super_class != 0) {
klass.setAttr("super", c.getSuperclassName());
}
}
for (int i : c.interfaces) {
klass.add(new Element("Interface", "name", getCpString(i)));
}
readFields(c, klass);
readMethods(c, klass);
readAttributesFor(c, c.attributes, klass);
klass.trimToSize();
}
示例8: analyzeModule
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
void analyzeModule(StandardJavaFileManager fm, String moduleName)
throws
IOException,
ConstantPoolException,
InvalidDescriptor {
JavaFileManager.Location location =
fm.getModuleLocation(StandardLocation.SYSTEM_MODULES, moduleName);
if (location == null)
throw new AssertionError("can't find module " + moduleName);
for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) {
String className = fm.inferBinaryName(location, file);
int index = className.lastIndexOf('.');
String pckName = index == -1 ? "" : className.substring(0, index);
if (shouldAnalyzePackage(pckName)) {
analyzeClassFile(ClassFile.read(file.openInputStream()));
}
}
}
示例9: run
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
private void run()
throws
IOException,
ConstantPoolException,
InvalidDescriptor,
URISyntaxException {
URI resource = findResource(keyResource);
if (resource == null) {
throw new AssertionError("Resource " + keyResource +
"not found in the class path");
}
analyzeResource(resource);
if (errors.size() > 0) {
for (String error: errors) {
System.err.println(error);
}
throw new AssertionError("There are mutable fields, "
+ "please check output");
}
}
示例10: analyzeResource
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
void analyzeResource(URI resource)
throws
IOException,
ConstantPoolException,
InvalidDescriptor {
JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null);
JavaFileManager.Location location =
StandardLocation.locationFor(resource.getPath());
fm.setLocation(location, com.sun.tools.javac.util.List.of(
new File(resource.getPath())));
for (JavaFileObject file : fm.list(location, "", EnumSet.of(CLASS), true)) {
String className = fm.inferBinaryName(location, file);
int index = className.lastIndexOf('.');
String pckName = index == -1 ? "" : className.substring(0, index);
if (shouldAnalyzePackage(pckName)) {
analyzeClassFile(ClassFile.read(file.openInputStream()));
}
}
}
示例11: check
import com.sun.tools.classfile.Descriptor.InvalidDescriptor; //导入依赖的package包/类
static void check(Map<ClassFile, List<Method>> refMembers, Map<ClassFile, List<Method>> membersToCheck) throws ConstantPoolException, InvalidDescriptor {
for (Map.Entry<ClassFile, List<Method>> ref : refMembers.entrySet()) {
ClassFile cRef = ref.getKey();
for (Method mRef : ref.getValue()) {
boolean ok = false;
for (Map.Entry<ClassFile, List<Method>> toCheck : membersToCheck.entrySet()) {
ClassFile cToCheck = toCheck.getKey();
for (Method mToCheck : toCheck.getValue()) {
if (cRef.getName().equals(cToCheck.getName()) &&
mRef.descriptor.getReturnType(cRef.constant_pool).equals(
mToCheck.descriptor.getReturnType(cToCheck.constant_pool)) &&
mRef.descriptor.getParameterTypes(cRef.constant_pool).equals(
mToCheck.descriptor.getParameterTypes(cToCheck.constant_pool))) {
ok = true;
}
}
}
if (!ok) {
throw new AssertionError("Matching method descriptor for " + mRef.descriptor.getParameterTypes(cRef.constant_pool) + "not found");
}
}
}
}