以编程方式构建Web应用程序

时间:2012-12-25 08:52:34

标签: java web compilation

我想用编程方式编译带有大量导入和依赖的Web应用程序,我可以使用javax.tools

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(System.in , System.out ,System.err, "D:/data/jeeViews/projects/seds/vcvd/main/com/vcvd/servlet/Dispatcher.java");

问题是不会导入类并抛出ClassNotFound异常。

任何想法?

2 个答案:

答案 0 :(得分:1)

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
        compiler.run(System.in , System.out ,System.err, "/home/visruth/Desktop/Sample.java");

Sample.java:

public class Sample {

    public static void main(String... args) {

    System.out.println("Hello world");

    }

}

以上代码适合我。

确保您提供的路径"D:/data/jeeViews/projects/seds/vcvd/main/com/vcvd/servlet/Dispatcher.java"有效。 请在Dispatcher.java中发布代码。因为,如果它引用其中的其他类,也可能会产生此异常。例如,假设在 Sample.java 存在的同一位置还存在另一个 Another.java 文件。如果修改上述 Sample.java ,可能会在Another another = new Another();上发生此异常,因为它引用了类路径中的另一个类

public class Sample {

    public static void main(String... args) {

    // makes exception as it is not in the class path.
    // to avoid exception make it available in the class path.
    Another another = new Another();

    System.out.println("Hello world");

    }

}

Another.java:

public class Another {

//codes........

}

更好的解决方案是使用构建工具,例如ant

答案 1 :(得分:0)

ClassNotFound例外基本上就是它所说的。

找不到要编译的文件。

这意味着两件事之一

  1. 您指向错误的位置(希望不是)

  2. 您正在使用Package或其他类的未编译文件。例如:如果您使用包CA,则必须确保在编译类之前编译包CA

  3. (这适用于您导入的任何课程)