Почему опция -classpath не работает на java 1.8 - PullRequest
0 голосов
/ 06 апреля 2020

в моей системе есть

C:\Users\Ravi>java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

как при запуске

C:\Users\Ravi>java -classpath="C:\Users\Ravi\jar\" -Dcom.android.monkeyrunner.bindir=..\framework -jar monkeyrunner-26.0.0-dev.jar
Unrecognized option: -classpath=C:\Users\Ravi\jar\
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Пожалуйста, дайте мне знать, что я делаю неправильно.

1 Ответ

2 голосов
/ 06 апреля 2020

В документации есть:

- путь к классам, путь к классам -cpath или путь к классам -cp Разделенный точкой с запятой (;) список каталогов, архивы JAR и ZIP-архивы для поиска файлов классов.

Указание пути к классу переопределяет любой параметр переменной среды CLASSPATH. Если опция пути к классу не используется, а путь к классу не установлен, тогда путь к классу пользователя состоит из текущего каталога (.).

В качестве особого удобства, элемент пути к классу, который содержит базовое имя звездочки () считается эквивалентным указанию списка всех файлов в каталоге с расширением .jar или .JAR. Программа Java не может определить разницу между двумя вызовами. Например, если каталог mydir содержит a.jar и b.JAR, то элемент пути к классу mydir / расширяется до A.jar: b.JAR, за исключением того, что порядок файлов JAR не указан. Все файлы .jar в указанном каталоге, даже скрытые, включены в список. Запись пути к классу, состоящая из звездочки (*), расширяется до списка всех файлов JAR в текущем каталоге. Переменная среды CLASSPATH, если она определена, также расширяется. Любое расширение подстановочного знака пути к классу, которое происходит до запуска виртуальной машины Java. Java программы никогда не видят подстановочные знаки, которые не раскрываются, за исключением запросов к среде, например, путем вызова System.getenv ("CLASSPATH").

Так что вам лучше иметь его вот так (список все банки):

java -classpath "C:\Users\Ravi\jar\a.jar;C:\Users\Ravi\jar\b.jar" -Dcom.android.monkeyrunner.bindir=..\framework -jar monkeyrunner-26.0.0-dev.jar

Чтобы узнать больше о classpath, вы также можете посмотреть здесь .

...