动态生成java文件的方法
package com.hongsoft.test;
import java.io.*;
//定制的类装入器
public class TestCompile extends ClassLoader
{
String _compiler;
String _classpath;
public static void main(String[] args)
{
new TestCompile();
}
public TestCompile()
{
super(ClassLoader.getSystemClassLoader());
//默认编译器
if (_compiler == null)
_compiler = "D:\\j2sdk1.4.2\\bin\\javac";
_classpath = ".";
String extraclasspath =
"c:\\Program Files\\Java\\j2re1.4.2\\lib\\rt.jar";
// = System.getProperty("calc.classpath");
if (extraclasspath != null)
{
_classpath =
_classpath
+ System.getProperty("path.separator")
+ extraclasspath;
}
compile();
}
public void compile()
{
String filename = "";
String classname = "";
try
{
//创建临时文件
File javafile =
File.createTempFile("compiled_", ".java", new File("."));
filename = javafile.getName();
classname = filename.substring(0, filename.lastIndexOf("."));
generateJavaFile(javafile, classname);
//编译文件
invokeCompiler(javafile);
//创建java类
byte[] buf = readBytes(classname + ".class");
Class c = defineClass(buf, 0, buf.length);
try
{
c.newInstance();
}
catch (IllegalAccessException e)
{
throw new RuntimeException(e.getMessage());
}
catch (InstantiationException e)
{
throw new RuntimeException(e.getMessage());
}
}
catch (IOException e)
{
throw new RuntimeException(e.getMessage());
}
}
//生成java文件
void generateJavaFile(File javafile, String classname) throws IOException
{
FileOutputStream out = new FileOutputStream(javafile);
String text =
"public class "
+ classname
+ " {"
+ " public int getCreater() {return 1;}"
+ "}";
out.write(text.getBytes());
out.close();
}
//编译java文件
void invokeCompiler(File javafile) throws IOException
{
String[] cmd =
{ _compiler, "-classpath", _classpath, javafile.getName()};
//执行编译命令
//A1:
Process process = Run
相关文档:
怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:
首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。J2SE,Java 2 Platform Standard
Edition,我们经常说到的JDK,就主要指的这个,它是三者的基 ......
平时在工作的时候,总是觉得刚毕业的同事们对技术的理解不到位,知其然而不知其所以然。可是,静下心来想一想,这也不能全怪他们,不是新人们不爱
学,而是现如今Java Web开发的确很繁复。表面上看,现在会Java的人多如牛毛,SSH 恨不得是每个 java 开发培训课的必选项目,但
WEB 开发的门槛,真的不低。当然,我说不低� ......
package com.hefeng.test;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.uti ......
取:
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie : cookies){
if(cookie.getName().equals("mid")){
String mid = cookie.getValue();
}
}
}
存:
String mid ......
类的包访问权限:《Java编程思想》中一段话的困惑
在《java编程思想第三版》(陈昊鹏 饶若楠等译)的第五章隐藏具体实现中,5.4节的最后一段话是:
“正如前面所提到的,如果没能为类访问权限指定一个访问修饰符,它就会缺省得到包访问权限。这意味着该类的对象可以由包内任何其他类来创建� ......