【问题标题】:Error: Invalid escape sequence [closed]错误:无效的转义序列[关闭]
【发布时间】:2018-06-18 09:45:49
【问题描述】:

这是我的第一个自动化代码:

package Automationframework;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class FirstTestClass {
    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.gecko.driver", "D:\workbox\Online Store\geckodriver.exe");

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.store.demoqa.com");
        System.out.println("Successfully opened the website www.Store.Demoqa.com");
        Thread.sleep(5000);
        driver.quit();
    }
}

它正在抛出错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
    at Automationframework.FirstTestClass.main(FirstTestClass.java:13)**

【问题讨论】:

标签: java


【解决方案1】:

说明

你写了String

"D:\workbox\Online Store\geckodriver.exe"

但是\这个字符在Java中有特殊的含义。它被解释为转义字符。这意味着它用于将以下字符解释为文字并删除它的特殊含义(如果它有一个)。这使得在String 中写入符号" 成为可能,尽管它通常会引入String 的结尾(或开头),例如:

"...\"..."

它还用于编写特殊字符,例如\n,它被解释为newline

看看你当前的代码,有了这些知识,意味着你正在编写\w\O\g。但是这三个不是有效的转义序列,这就是编译器抱怨的原因。有效的转义序列是:

  • \b - 退格
  • \t - 标签
  • \n - 换行
  • \f - 换页
  • \r - 回车
  • \" - 双引号字符
  • \' - 单引号
  • \\ - 反斜杠

这就是编译器建议它们的原因,更多信息请参见 official Oracle documentation


解决方案

为了将\ 本身用作字符,您需要再次使用\转义符号,例如\\。所以通过写

"D:\\workbox\\Online Store\\geckodriver.exe"

您会收到一个包含文本的String

D:\workbox\Online Store\geckodriver.exe

如果您使用 IDE,例如 eclipse,您可能可以将其设置为在创建字符串时自动插入双斜杠,非常方便。

或者您应该使用正斜杠,它们与文件系统无关,无论您在 Windows、Mac、Linux 或其他地方运行 Java 程序都可以使用。更多信息请访问Forward slash or backslash?

"D:/workbox/Online Store/geckodriver.exe"

【讨论】:

  • 或使用正斜杠
【解决方案2】:

指定路径时使用双(反)斜杠:

"D:\\workbox\\Online Store\\geckodriver.exe"

【讨论】:

    【解决方案3】:

    如果你使用的是 eclipse,有一个设置会在粘贴时自动插入转义字符:

    Window -> Preferences -> Java -> Editor -> Typing -> In String 文字 -> 粘贴到字符串文字时转义文本

    然后,当您的剪贴板中有 D:\Env\Images\image1.png 之类的内容并将其粘贴到 eclipse 中时,它会自动如下所示:D:\\Env\\Images\\image1.png

    【讨论】:

    • 不知道那个,但如果我粘贴 "D:\\Env\\Images\\image1.png" ? (我主要考虑String 用于需要转义两次的正则表达式)。
    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多