2012-12-25 215 views
-4

我想編譯大量進口和依賴web應用程序,我可以使用javax.tools構建Web應用程序編程

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

任何想法?

+0

什麼異常(此爲您導入任何類也是如此)? – Andremoniy

+0

找不到這個類 –

+0

也在這裏發佈printStackTrace。 – Visruth

回答

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的郵政編碼。因爲,如果它引用其他類,它也可能會產生這個異常。例如,假設還有另一個另一個.java文件存在於Sample.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

0

ClassNotFound異常基本上就是它說的。

找不到需要編譯的文件。

這意味着兩件事情之一

  1. 您都指向了錯誤的位置(但願不是)

  2. 您使用的是未編譯文件的包或其他類。例如:如果您使用包CA您必須確保在編譯您的課程之前編譯包CA

+0

感謝問題之一是你提到的另一個是無效的classPath位置通常eclipe做的努力 –

+0

Eclipse傾向於檢查'.java'文件的路徑有時它不知道如果他們還沒有編譯導致問題 – cjds