繁体   English   中英

当我使用`javac`进行编译时,如何解决此类问题:“错误:找不到符号[...]”?

[英]How can I solve that type of issue when I compile using `javac`: " error: cannot find symbol [...]"?

对于初学者,我不得不说我正在使用IntelliJ IDEA Community Edition 2020.3.1并运行java 15.0.1 2020-10-20 ,当我在启用断言并单击运行按钮后运行我的程序时,它按预期工作. 这里说的是我的文件结构:

文件结构截图

这是我的TestRunner.java文件中的代码:

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;

public final class TestRunner {
    private static final List<Class<?>> TESTS = List.of(CalculatorTest.class);


    public static void main(String[] args) throws Exception {

        List<String> passed = new ArrayList<>();
        List<String> failed = new ArrayList<>();

        for (Class<?> klass : TESTS) {

           if(!UnitTest.class.isAssignableFrom(klass)){
               throw new IllegalArgumentException("Class "+ klass + " must implement UnitTest");
           }

           for(Method method : klass.getDeclaredMethods()){
               if(method.getAnnotation(Test.class) != null){
                   try{

                       UnitTest test = (UnitTest) klass.getConstructor().newInstance();

                       test.beforeEachTest();
                       method.invoke(test);
                       System.out.println(method.invoke(test));
                       test.afterEachTest();
                       passed.add(getTestName(klass, method));

                   }catch(Throwable throwable){
                       failed.add(getTestName(klass, method));
                   }
               }
           }
        }

        System.out.println("Passed tests: " + passed);
        System.out.println("FAILED tests: " + failed);
    }

    private static String getTestName(Class<?> klass, Method method) {
        return klass.getName() + "#" + method.getName();
    }
}

这是我的问题:

  1. 当我使用javac TestRunner.java编译我的主类TestRunner.java时,它找不到那些符号CalculatorTest.classUnitTest.classTest.classUnitTest 这是错误消息: 错误信息

  2. 但是,当我使用javac *.java时,我的文件编译并生成了我的.class文件,这是一个屏幕截图:

截图

但是当我尝试使用java TestRunner运行我的文件时,它说:“错误找不到或加载类TestRunner ,这是一个屏幕截图:

截屏

如果有人可以帮助我解决这些问题,我会非常高兴。 到目前为止,当我搜索它们时,我没有找到任何解决方案。 谢谢!

看了很多答案,我发现解决方法很简单。

首先编译TestRunner.java:

javac -cp . TestRunner.java

然后运行 ​​TestRunner (包含我的主要功能):

java -cp . -ea TestRunner

原来我错过了点“ ”!

这是最终结果:

截屏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM