Я столкнулся со странным поведением при выполнении программы java из командной строки с путем к классам в файле. Я не уверен, связано ли это с Windows, Java или cli.
Тестовый класс:
package de.test;
public class Playground {
public static void main(String[] args) throws Exception {
System.out.println("hello world");
}
}
После компиляции я могу запустить его с помощью команды
java -classpath "C:\Users\TEST\eclipse-workspace\Playground\target\classes" de.test.Playground
Однако, если у меня есть файл cp.txt
с содержимым (это только аргумент classpath)
-classpath "C:\Users\TEST\eclipse-workspace\Playground\target\classes"
, и я запускаю
java "@cp.txt" de.test.Playground
I получите ошибку java.lang.ClassNotFoundException: de.test.Playground
. То же без кавычек вокруг @cp.txt
.
Я проверял это с Oracle JDK 11.0.2 и OpenJDK 11.0.5. Оба показывают одинаковое поведение.
Кто-нибудь знает, почему это происходит? Когда путь к классу слишком длинный, Eclipse помещает его в файл и использует командную строку @ для запуска программы. Но это не работает, как показано выше. Поэтому, когда у меня слишком много зависимостей, я больше не могу запускать программу Java из Eclipse.