Установка пути к классу из Cygwin

#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\*
  

или, что еще лучше, используйте cygpath, как это.