gpt4 book ai didi

javac无法导入项目中的类

转载 作者:行者123 更新时间:2023-12-02 09:30:40 25 4
gpt4 key购买 nike

我正在尝试使用许多教程中描述的以下方式从 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时 - 我确实在每个其他类上都遇到了错误(WebDriverArrayList 等)。

还尝试加入我的本地存储库中的所有库:

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

注意:分号不是冒号。

<小时/>

My better way: javac -cp c:\full\path\to\junit-4.12.jar test\java\ColorTest.java. In this case I not get errors in import .... strings.

但是对于不在 Junit JAR 文件中的类,您仍然会遇到错误。对吗?

IMO,你需要做的是:

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

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

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

在您的情况下,您的单元测试类将取决于 Junit 类以及您的测试代码尝试测试的编译类。如果包含后者的目录树不在类路径上,或者它们还没有被编译,那么javac将会提示。

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

<小时/>

最后你问:

How can I correctly launch the tests from command line via javac?

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

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

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

关于javac无法导入项目中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58013612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com