事实上,类似调用Javac命令编译类文件,然后java执行文件,返回结果那样
怎么实现??

解决方案 »

  1.   

    这样行吗?
    class A
    {
    public void method1()
    {
    //
    }
    public void method2()
    {
    //
    }
    public void method3()
    {
    //
    }
    }
    public class Test
    {
    public static void main(String args[])
    {
    A app=new A();
      if(args[0].equals("A"))
    {
    if(args[1].equals("method1")
    {
    app.method1();
    }
    else if(args[1].equals("method2")
    {
    app.method2();
    }
    else if(args[1].equals("method3")
    {
    app.method3();
    }
    }
    else
    {
    //
    }
    }
    }
      

  2.   

    class ClassName
    采用反射:{ public void setMessage(String str) 
    ...
     }Class cls = Class.forName("className");
    Method mtd = cls.getMethod("setMessage",new Class[]{String.class});
    Object obj = cls.newInstance();

    mtd.invoke(obj,new Object[]{"Hello "});
      

  3.   

    将楼二楼和三楼结合,就是一个完正范例了
    class A
    {
    public void method1(String str1)
    {
    out.println(str1);
    }
    public void method2(String str2)
    {
    out.println(str2);
    }
    public void method3(String str3)
    {
    out.println(str3);
    }
    }
    public class Test
    {
    public static void main(String args[])
    {
    Class cls = Class.forName("A");
    Method mtd = cls.getMethod("method1",new Class[]{String.class});
    Object obj = cls.newInstance();

    mtd.invoke(obj,new Object[]{"Hello"}); }
    }
      

  4.   

    问题是,输入的只是一个Java文件,而不是一个类文件,要首先编译成Class文件才可以啊...怎么调用编译器???
      

  5.   

    To notruiyi(notruiyi) :
    嗯,差不多就是那个想法..
      

  6.   

    有人知道么?有高手提供了这个方法:
    class TestJavac {
    public static void main(String args[]){
    try{
    Runtime rt = Runtime.getRuntime();
    String srcFile ="C:/HelloWorld.java";
    String command = "javac ";
    rt.exec(command+srcFile);
    System.out.println("Compile File Success!");
    }catch(Exception e){
    System.out.println("Compile File Fail!");
    e.printStackTrace();
    }
    }
    }
    但这个方法,假设源文件无法编译的话,错误信息根本无法得到
      

  7.   

    楼主直接说编译.java文件就是了啊,让人误解了.你要的方法简单,下面就是:// 测试错误文件 T.java
    public class T
    {
    dsalfalsf;
    }// 编译文件TestJavac.java
    import java.io.*;class TestJavac {
    public static void main(String args[]){
    try{
    Runtime rt = Runtime.getRuntime();
    String srcFile ="F:/T.java";
    String command = "javac ";
    Process proc = rt.exec(command+srcFile);

    proc.waitFor();

    BufferedReader br = new BufferedReader( new InputStreamReader(proc.getErrorStream()));

    String strInfo = br.readLine();
    while(strInfo!= null){
    System.out.println(strInfo);
    strInfo = br.readLine();
    }
    System.out.println("Compile File Success!");
    }catch(Exception e){
    System.out.println("Compile File Fail!");
    e.printStackTrace();
    }
    }
    }运行结果:
    F:\>java TestJavac
    F:/T.java:4: <identifier> expected
            dsalfalsf;
                     ^
    1 error
      

  8.   

    怎么要调用外部的编译命令啊,用ant等等不是有java版的编译器吗?
      

  9.   

    可以的, 动态调用方法. 象hibernate, JUnit都有这样的应用
      

  10.   

    在程序中调中javac命令.然后new A这个类.然后在主程序中调用a类中的f方法.