从现有的java程序编译并创建新java程序的实例

时间:2011-10-04 13:42:03

标签: java

我正在eclipse中编写一个java程序来从lotusnotes db中提取表单。每当我得到一个表单时,我需要创建一个.java文件,该文件包含一个与表单同名的类。然后我必须编译这个新的.java类,它给了我.class文件&因此我可以创建该新类的实例。我需要知道这种创建,编译和方法的方法。可以从单个现有的java程序中实例化一个新类。

我的伪代码低于

import java.util.Iterator;
import de.bea.domingo.*;
import java.util.List;
import java.io.*;
public class LotusNotesDBExtraction
{
public static void main(String[] args) throws DNotesException,IOException
{
    DNotesFactory factory = DNotesFactory.getInstance();
    DSession session = factory.getSession();
    DDatabase database = session.getDatabase("", "employee.nsf");
    List formlist=database.getForms();
    //System.out.println("Number of forms are :"+formlist.size());
    for(int i=0;i<formlist.size();i++)
    {
        DForm formn=(DForm)(formlist.get(i));
        DForm formname= database.getForm(formn.getName());

        **//Creating a class in a file
        FileWriter outputfile = new FileWriter("D:\\Lotusnotesformfiles\\"+formn.getName()+".java",true);
        BufferedWriter out = new BufferedWriter(outputfile);
        out.write("public class "+formn.getName()+" {");
        out.newLine();
        out.flush();**

        try
        {
             **//Compile the class here**   
                            Process p1 = Runtime.getRuntime().exec("cmd javac \"D:\\Lotusnotesformfiles\\"+formn.getName()+".java\"");   
            System.out.println("compiled");
         }   
          catch(IOException x)
        {
            x.printStackTrace();
        }
                **//instantiate the new class here**
}
}

但是我无法获得新类的.class文件。我可以在同一个程序中实例化新类吗?我被困在这一点上。可以请任何帮助我

1 个答案:

答案 0 :(得分:0)

你应该能够使用Reflection API做很多事情,如果不是全部的话,它允许你在运行时修改类,检查它们的内容,甚至动态加载类(例如,在编译之后)