本文整理汇总了Java中sun.tools.java.ClassFile类的典型用法代码示例。如果您正苦于以下问题:Java ClassFile类的具体用法?Java ClassFile怎么用?Java ClassFile使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ClassFile类属于sun.tools.java包,在下文中一共展示了ClassFile类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: generateOutputFiles
import sun.tools.java.ClassFile; //导入依赖的package包/类
/**
* Create and return a new instance of self. Subclasses
* which need to do something other than default construction
* must override this method.
*/
protected void generateOutputFiles (CompoundType topType,
BatchEnvironment env,
File destDir) {
// Grab the 'alreadyChecked' HashSet from the environment...
HashSet alreadyChecked = env.alreadyChecked;
// Ask subclass for a list of output types...
OutputType[] types = getOutputTypesFor(topType,alreadyChecked);
// Process each file...
for (int i = 0; i < types.length; i++) {
OutputType current = types[i];
String className = current.getName();
File file = getFileFor(current,destDir);
boolean sourceFile = false;
// Do we need to generate this file?
if (requiresGeneration(file,current.getType())) {
// Yes. If java source file, add to environment so will be compiled...
if (file.getName().endsWith(".java")) {
sourceFile = compileJavaSourceFile(current);
// Are we supposeded to compile this one?
if (sourceFile) {
env.addGeneratedFile(file);
}
}
// Now create an output stream and ask subclass to fill it up...
try {
IndentingWriter out = new IndentingWriter(
new OutputStreamWriter(new FileOutputStream(file)),INDENT_STEP,TAB_SIZE);
long startTime = 0;
if (env.verbose()) {
startTime = System.currentTimeMillis();
}
writeOutputFor(types[i],alreadyChecked,out);
out.close();
if (env.verbose()) {
long duration = System.currentTimeMillis() - startTime;
env.output(Main.getText("rmic.generated", file.getPath(), Long.toString(duration)));
}
if (sourceFile) {
env.parseFile(new ClassFile(file));
}
} catch (IOException e) {
env.error(0, "cant.write", file.toString());
return;
}
} else {
// No, say so if we need to...
if (env.verbose()) {
env.output(Main.getText("rmic.previously.generated", file.getPath()));
}
}
}
}
示例2: generateOutputFiles
import sun.tools.java.ClassFile; //导入依赖的package包/类
/**
* Create and return a new instance of self. Subclasses
* which need to do something other than default construction
* must override this method.
*/
protected void generateOutputFiles (CompoundType topType,
BatchEnvironment env,
File destDir) {
// Grab the 'alreadyChecked' HashSet from the environment...
HashSet alreadyChecked = env.alreadyChecked;
// Ask subclass for a list of output types...
OutputType[] types = getOutputTypesFor(topType,alreadyChecked);
// Process each file...
for (int i = 0; i < types.length; i++) {
OutputType current = types[i];
String className = current.getName();
File file = getFileFor(current,destDir);
boolean sourceFile = false;
// Do we need to generate this file?
if (requiresGeneration(file,current.getType())) {
// Yes. If java source file, add to environment so will be compiled...
if (file.getName().endsWith(".java")) {
sourceFile = compileJavaSourceFile(current);
// Are we supposeded to compile this one?
if (sourceFile) {
env.addGeneratedFile(file);
}
}
// Now create an output stream and ask subclass to fill it up...
try {
IndentingWriter out = new IndentingWriter(
new OutputStreamWriter(new FileOutputStream(file)),INDENT_STEP,TAB_SIZE);
long startTime = 0;
if (env.verbose()) {
startTime = System.currentTimeMillis();
}
writeOutputFor(types[i],alreadyChecked,out);
out.close();
if (env.verbose()) {
long duration = System.currentTimeMillis() - startTime;
env.output(Main.getText("rmic.generated", file.getPath(), Long.toString(duration)));
}
if (sourceFile) {
env.parseFile(ClassFile.newClassFile(file));
}
} catch (IOException e) {
env.error(0, "cant.write", file.toString());
return;
}
} else {
// No, say so if we need to...
if (env.verbose()) {
env.output(Main.getText("rmic.previously.generated", file.getPath()));
}
}
}
}
示例3: requiresGeneration
import sun.tools.java.ClassFile; //导入依赖的package包/类
/**
* Return true if the specified file needs generation.
*/
public boolean requiresGeneration (File target, Type theType) {
boolean result = alwaysGenerate;
if (!result) {
// Get a ClassFile instance for base source or class
// file. We use ClassFile so that if the base is in
// a zip file, we can still get at it's mod time...
ClassFile baseFile;
ClassPath path = env.getClassPath();
String className = theType.getQualifiedName().replace('.',File.separatorChar);
// First try the source file...
baseFile = path.getFile(className + ".source");
if (baseFile == null) {
// Then try class file...
baseFile = path.getFile(className + ".class");
}
// Do we have a baseFile?
if (baseFile != null) {
// Yes, grab baseFile's mod time...
long baseFileMod = baseFile.lastModified();
// Get a File instance for the target. If it is a source
// file, create a class file instead since the source file
// will frequently be deleted...
String targetName = IDLNames.replace(target.getName(),".java",".class");
String parentPath = target.getParent();
File targetFile = new File(parentPath,targetName);
// Does the target file exist?
if (targetFile.exists()) {
// Yes, so grab it's mod time...
long targetFileMod = targetFile.lastModified();
// Set result...
result = targetFileMod < baseFileMod;
} else {
// No, so we must generate...
result = true;
}
} else {
// No, so we must generate...
result = true;
}
}
return result;
}