小编Raf*_*ini的帖子

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();
Run Code Online (Sandbox Code Playgroud)

我正在尝试编译Son.java,以扩展ParentProject.jar中的类,但即使使用“ -classpath”标志,也无法正常工作。但是,如果我将jar添加到编译器项目的构建路径中,它将起作用(并且不需要classpath标志)。这是正常现象吗?

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

java-compiler-api

4
推荐指数
1
解决办法
1013
查看次数

标签 统计

java-compiler-api ×1