javac无法在项目中导入类

javac无法在项目中导入类,java,junit4,javac,Java,Junit4,Javac,我尝试使用许多教程中描述的以下方法从windows命令行启动测试: javac -cp .;"c:\full\path\to\junit-4.12.jar" test\java\ColorTest.java 但在结果中,每个字符串都有编译错误: public class ColorTest extends BaseTest{ ^ symbol: class BaseTest src\test\java\ColorTest.jav

我尝试使用许多教程中描述的以下方法从windows命令行启动测试:

javac -cp .;"c:\full\path\to\junit-4.12.jar" test\java\ColorTest.java
但在结果中,每个字符串都有编译错误:

public class ColorTest extends BaseTest{
                               ^
  symbol: class BaseTest
src\test\java\ColorTest.java:14: error: cannot find symbol
        homePage.goToHomePage();
        ^
  symbol:   variable homePage
  location: class ColorTest
src\test\java\ColorTest.java:15: error: cannot find symbol
        homePage.moveToElement(HomePage.letterR, X_OFFSET, Y_OFFSET);
                               ^
  symbol:   variable HomePage
  location: class ColorTest
src\test\java\ColorTest.java:15: error: cannot find symbol
        homePage.moveToElement(HomePage.letterR, X_OFFSET, Y_OFFSET);
        ^
当我将命令添加到我的所有类BaseTest、HomeTest。。。或者在命令中使用*.java——我确实在其他类WebDriver、ArrayList等上收到错误

同时尝试从我的本地repo加入所有库:

javac -cp .;"c:\full\path\to\.m2\repositories\*" test\java\ColorTest.java
但在本例中,javac甚至没有在第一个字符串中看到junit包

src\test\java\ColorTest.java:1: error: package org.junit does not exist
import org.junit.Test;
                ^
src\test\java\ColorTest.java:2: error: package org.junit does not exist
import org.junit.Assert;
为什么javac不导入任何类? 如何通过javac从命令行正确编译测试类,并通过java对它们进行lzunch?
由于您是在Windows上编译,因此需要使用与Windows兼容的类路径分隔符:

javac -cp .;c:\full\path\to\junit-4.12.jar test\java\ColorTest.java
或者可能

javac -cp .;"c:\full\path\to\junit-4.12.jar" test\java\ColorTest.java
注意:分号不是冒号

我的更好方法是:javac-cpc:\full\path\to\junit-4.12.jartest\java\ColorTest.java。在这种情况下,我不会在导入中获得错误。。。。字符串

但是对于Junit JAR文件中没有的类,仍然存在错误。对吧?

在国际海事组织,你需要做的是:

阅读Oracle手册页面中的javac命令,以了解-cp以及可能的-d和/或-sourcepath

阅读Oracle手册页面中的类路径,了解这一切的实际含义

类路径允许javac查找代码所依赖的其他类的编译版本。这是一个重要的概念。这是一个好主意,真正理解它。。。而不是依赖从可疑或不适用的例子中复制的东西

在您的情况下,单元测试类将依赖于Junit类和测试代码试图测试的编译类。如果包含后者的目录树不在类路径上,或者它们没有被编译,那么javac会抱怨

现在我无法确定您是否仍然存在无法找到符号编译错误。但是如果您是,并且javac找不到的类确实存在,那么要么您没有编译它们,要么它们不在类路径上。。。以正确的方式

最后你问:

如何通过javac从命令行正确启动测试

这没有道理。您可以使用javac编译类。要运行它们,您需要使用java

本问答解释了如何运行Junit测试:


请注意,您还需要使用java正确指定类路径。

首先,您似乎使用了两种不同的框架:junit和TestNG导入org.TestNG.Assert;。你应该只使用其中一种,除非你有非常明确的理由同时使用它们。@Benoit,我修正了it@ValentynHruzytskyi是吗?Oracle TestNG不存在,我将考虑使用Gealle或其他构建系统来简化您的生活。我的更好的方法是:JavaC-CP:\Pult\PATH \ JunIT-4.12JAR测试\java\CalestTest.java。在这种情况下,我不会在导入中获得错误。。。。串。我确实编辑了我的问题,我不会争辩。然而-cp。;c:。。。和-cp c:。。。确实意味着不同的事情。如果您的ColorTest类依赖于以当前目录为根的目录树中的其他编译类,则后者将不起作用。>这没有意义。您可以使用javac编译类。要运行它们,您需要使用java如何使用java命令,但不使用javac编译.java类?我阅读了oracle教程,因此1如果未指定-class path、-classpath或-cp,则用户类路径是classpath环境变量的值(如果已设置),否则为当前目录。-我在command2中很好地设置了当前目录,使用-class路径选项指定要放置在类路径上的库。类路径上的位置应组织在包层次结构中。您还可以使用选项的其他形式:-classpath或-cp.-I将路径设置为package/packages c:\full\path\to\junit-4.12.jar或..\repositories\*