-4

我想以编程方式编译具有大量导入和依赖项的 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异常。

有任何想法吗?

4

2 回答 2

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

示例.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");

    }

}

另一个.java:

public class Another {

//codes........

}

更好的解决方案是使用像ant这样的构建工具

于 2012-12-25T09:34:50.673 回答
0

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

它找不到编译所需的文件。

这意味着两件事之一

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

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

(这适用于您导入的任何类)

于 2012-12-25T09:38:57.583 回答