System.setProperty("webdriver.chrome.driver", "C:\\Users\\your_path\\chromedriver.exe");
Должно быть хорошо Теперь.
Статическая инициализация выполняется во время компиляции / компоновки. Компилятор / компоновщик назначает местоположение переменной в статической памяти и заполняет ее правильными байтами (байты не обязательно должны быть всеми нулями). Когда программа запускается, те области статической памяти загружаются из двоичного файла программы, и дальнейшая инициализация не требуется.
Примеры:
namespace A {
// statically zero-initialized
int a;
char buf1[10];
// non-zero initialized
int b = 1;
char date_format[] = "YYYY-MM-DD";
}
В отличие от статической инициализации, динамическая инициализация требует запуска некоторого кода после запуска программы, чтобы таким образом инициализировать переменные в исходное состояние. Код, который нужно запустить, не обязательно должен быть вызовом конструктора.
Примеры:
namespace B {
int a = strlen(A::date_format); (1)
int b = ++a; (2)
time_t t = time(); (3)
struct C {
int i;
C() : i(123) {}
};
C c; (4)
double s = std::sqrt(2); (5)
}
Теперь стандарт C ++ позволяет компилятору выполнять вычисления, которые выполняться во время динамической инициализации при условии, что эти вычисления не имеют побочных эффектов. Кроме того, эти вычисления не должны зависеть от внешней среды. В приведенном выше примере:
(1) может выполняться статически, поскольку strlen()
не имеет побочных эффектов.
(2) должен оставаться динамическим, поскольку он мутирует a
.
(3) должен оставаться динамическим, поскольку он зависит от внешней среды / делает системные вызовы.
(4) может выполняться статически.
(5 ) немного сложнее, поскольку вычисление с плавающей запятой зависит от состояния FPU (а именно, режима округления). Если компилятору предлагается не относиться к арифметике с плавающей запятой, что серьезно, тогда это можно сделать статически.
c.i
в123
. Тот факт, что компилятор несколько перестроил то, как это было сделано, - это просто деталь реализации. – Leon 11 June 2016 в 08:40