#java #bash #cygwin #classpath
#java #bash #cygwin #путь к классу
Вопрос:
Я использую Eclipse для разработки Java, поэтому у меня есть папка, полная папок проекта Eclipse Java. Папка /bin находится в каждой папке, поэтому для запуска проекта из Cygwin путь к классам должен быть установлен (в моей системе) в: «E:/programming/java/workspace/SomeProject/bin «. Поскольку в моей папке ~ 40 проектов, я бы предпочел создать скрипт для добавления путей к CLASSPATH. Кажется, что мой скрипт добавляет пути к CLASSPATH, но когда я пытаюсь запустить Java, я получаю сообщение об ошибке class 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 и выполняю echo $CLASSPATH , отображаются все каталоги, но java не может найти классы. Я также пробовал JAVAWORKSPACE="E:programmingjavaworkspace*
, но это привело к тому, что в CLASSPATH ничего не было добавлено. Если я пройду через настройки Windows и вручную введу «E:/programming/java/workspace/MyProject/bin » в командной строке Java для CLASSPATH нет проблем с поиском классов. Что с этим не так? Я не уверен, проблема ли это в скрипте или CLASSPATH не нравятся пути в стиле unix. Если мне нужно добавить пути к Windows, пожалуйста, помогите мне изменить мой скрипт для этого. Спасибо!
Ответ №1:
У меня сейчас нет настроенного Cygwin, но я столкнулся с этой проблемой несколько лет назад. Java ничего не знает об именах путей Cygwin, а bash обрабатывает одну обратную косую черту как escape-символ, удаляя ее перед передачей в java (c). Если вы сделаете
echo E:programmingjavaworkspace*
Вы увидите, что выводится E:programmingjavaworkspace*, а не то, что вы ожидаете. Ключ в том, чтобы либо экранировать escape-символы, например
E:\programming\java\workspace\*