Установка CLASSPATH от Cygwin - PullRequest
1 голос
/ 28 мая 2011

Я использую Eclipse для разработки Java, поэтому у меня есть папка, полная папок Eclipse Java Project.Папка / bin находится в каждой папке, поэтому, чтобы запустить проект из Cygwin, путь к классу должен быть установлен (в моей системе) на: «E: /рограммирование / java / workspace / SomeProject / bin».Поскольку в моей папке ~ 40 проектов, я бы лучше сделал скрипт для добавления путей к CLASSPATH.Мой сценарий, кажется, добавляет пути к CLASSPATH, но когда я пытаюсь запустить Java, я получаю ошибку класса not found.В моем .bashrc вот мой сценарий:

JAVAWORKSPACE="/cygdrive/e/programming/java/workspace/*"
BIN="/bin;"
for f in $JAVAWORKSPACE
do
    if [ -d $f ] ; then
        export CLASSPATH="$f$BIN$CLASSPATH"
    fi
done

Когда я запускаю Cygwin и отображаю $ CLASSPATH, все каталоги появляются, но java не может найти классы.Я также попытался JAVAWORKSPACE="E:\programming\java\workspace\*, но это не привело к добавлению ничего в CLASSPATH.Если я пройду через настройки Windows и вручную введу «E: /рограммирование / java / workspace / MyProject / bin» в CLASSPATH, у командной строки Java не будет проблем с поиском классов.Что с этим?Я не уверен, что это проблема со скриптом или CLASSPATH не любит пути в стиле Unix.Если мне нужно добавить пути Windows, пожалуйста, помогите мне изменить мой сценарий, чтобы сделать это.Спасибо!

1 Ответ

2 голосов
/ 07 июня 2011

У меня сейчас нет Cygwin, но я столкнулся с этой проблемой несколько лет назад. Java ничего не знает о путевых именах Cygwin, и bash обрабатывает один обратный слеш как escape-символ, удаляя его перед тем, как он может быть передан в java (c). Если вы делаете

echo E:\programming\java\workspace\*

Вы увидите, что он выводит E: programjavaworkspace *, а не то, что вы ожидаете. Ключ заключается в том, чтобы избежать экранирования, как

E:\\programming\\java\\workspace\\*

или даже лучше, используйте cygpath как this .

...