Java编译任务和类路径选项不起作用



我试图创建一个类来编译一些将在运行时创建的.java,但我无法正常工作。

这是我的代码

    File bin = new File(args[args.length-1]);
    System.setProperty("java.home", "C:\Program Files\Java\jdk1.7.0_60");
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    StandardJavaFileManager standardJavaFileManager = compiler.getStandardFileManager(null, null, null);
    try {
        standardJavaFileManager.setLocation(StandardLocation.CLASS_OUTPUT, Arrays.asList(bin));
    } catch (IOException e) {
        System.err.println("Invalid bin directory");
        e.printStackTrace();
    }
    List<String> options = new ArrayList<String>();
    options.add("-Xlint:unchecked");
    options.add("-classpath");
    options.add("e:\ParentProject.jar");
    System.out.println(options);
    CompilationTask compilationTask = compiler.getTask(null, standardJavaFileManager, null, options, null, standardJavaFileManager.getJavaFileObjectsFromFiles(archives));
    compilationTask.call();

我试图编译一个Son.java,它扩展了ParentProject.jar中的一个类,但它不起作用,即使使用了"-classpath"标志。但是,如果我将jar添加到编译器项目的构建路径中,它就可以工作(而且它不需要classpath标志)。这是正常行为吗?

这就引出了另一个问题。当我试图在Tomcat服务器上运行的项目中使用这段代码时,即使使用WEB-INF/lib中的jar,我也无法使其工作。

您可以将JAR添加到类路径中,如下所示:

standardJavaFileManager.setLocation(
    StandardLocation.CLASS_PATH, 
    Arrays.asList( new File ( "path/to/ParentProject.jar" ) )
);

相关内容

  • 没有找到相关文章

最新更新