当前位置: 首页 > 知识库问答 >
问题:

Java编译器API:导入自定义包不起作用

别锐
2023-03-14

我正在一个web项目中创建一个自定义。java文件,使用自定义类加载器加载它,使用编译器API编译它,然后通过反射执行它。唯一似乎不起作用的是编译如下所示的文件:

package testfiles; 
import exceptions.IncorrectSolutionException; 
public class TestFile { 
  public static void testSolution() throws IncorrectSolutionException {
    //some code here
  }
}

使用编译器API的诊断收集器,我得到以下错误消息:

package exceptions does not exist, line 2 cannot find symbol
symbol:   class IncorrectSolutionException

包“exceptions”和引用的类肯定存在,我的src文件夹的结构如下:(也包含类文件的文件夹)

  • src公司
    • 例外情况
    • 测试文件

    我尝试按照这里的建议设置类路径,但它不会改变任何东西。

    如何编译文件:

    DiagnosticCollector< JavaFileObject > diagnostics = new DiagnosticCollector<>();
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
    CompilationTask task = compiler.getTask(null, fileManager, diagnostics, optionList, null, files);
    File file = new File(absolute path);
    //I am using the absolute path here, because I had problems resolving the relative path as my working directory seems to be the folder eclipse is installed in.
    Iterable<? extends JavaFileObject> files = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(file));
    if(task.call()) {
        System.out.println("compiling File");
    } else {
        //...handle Diagnostics
    }
    

    我必须在CompilationTask中添加另一个选项吗?还是问题出在其他地方?提前感谢!

共有1个答案

史承福
2023-03-14

显然它必须对工作目录和文件夹Tomcat做些什么。在服务器位置下配置服务器路径对我来说很有用(将其设置为我工作区中的项目根目录)。

 类似资料:
  • 我在编译顺序时遇到编译器错误。java文件,即使它包含另一个打包类的导入语句。我不完全确定为什么会发生这种情况,但这是一个目录树,其中包含一些文件: > com/my/domain/Order.java 这个文件里面有下面的包和导入: com/my/utils/MyDate。此文件中包含以下包和导入: 编译顺序时出现编译器错误。java: 我仍然不知道如何解决这个问题后,试图从评论。这里有一些更多

  • 我试图创建自定义包,我把我的其他程序,但当我导入这个包,它会给我错误。 这是自定义包文件: 这是我导入此包的测试文件: 我得到了这个错误: 我的目录设置是:

  • 问题内容: 我是Java的新手,但我一直在网上寻找解决方案,但似乎都没有用。请帮我。 我有两个文件。其中之一是包含主要功能的java文件。在里面: 使用该命令,我想创建一个新对象,该对象是一个名为的单独文件中的类。但是Java无法识别VaporVisitor是什么,大概是因为它不知道存在(它在同一目录中)。我试图使它们成为同一程序包的一部分,放入不同的程序包中并导入…,但所有这些都失败了。谁能给我

  • 问题内容: 如何导入在其他文件中编写的类?我所有的课程都在同一个程序包下。 问题答案: 如果所有类都在同一个程序包中,则无需导入它们。 只需像这样实例化该对象:

  • 问题内容: 我需要在项目中导入Java类。我需要导入的类在具有绝对路径的JAR文件中 现在在我的源文件(Test.java)中 我正在与 它显示了stdlib不存在的错误。 我的导入语句正确还是类路径有问题?此import语句不应该导入JAR文件中存在的所有类吗? 我没有使用任何IDE,我的操作系统是Linux。 问题答案: import语句从jar文件而不是jar文件本身导入类。 形式的导入声明

  • 酱紫写还是找不到包