2016-07-20 4 views
1

У меня есть простая Java-программа, которая выводит мой путь к классам. Структура папок выглядит следующим образом:.Запуск Java-программы на Cygwin - classpath не найден

[~/tmp/bin]# ls 
launcher/ PrintClasspath.class* 

И копия того же класса еще один уровень вниз в

[~/tmp/bin/launcher]# ls 
PrintClasspath.class* 

Когда я прыгаю в мою ~/tmp каталог и запустить PrintClasspath в моем ~/tmp/bin каталоге, я может запустить программу просто отлично, указывая ./bin как путь к классам.

[~/tmp]# java -cp "./bin" PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/ 

Или я могу запустить один и тот же файл, который я вложенный в каталоге ~/tmp/bin/launcher, если я изменить путь к классам следующим образом:

[~/tmp]# java -cp "./bin/launcher" PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/launcher/ 

Но когда я пытаюсь сидеть в моем ~/tmp директории, и попробуйте запустить мой класс в каталоге ~/tmp/bin/launcher с ./bin как мой путь к классам и квалифицироваться, где класс находится с помощью следующих действий:

[~/tmp]# java -cp "./bin" launcher.PrintClasspath 
Error: Could not find or load main class launcher.PrintClasspath 

ОТКАЗЫВАЕТСЯ. Я запустил тот же тест в своем ящике Linux и определил, где класс находится в подкаталоге, после того как он предоставил несколько каталогов для классов, работает нормально.

Первоначально предполагалось, что это был ньюанс Windows/Cygwin, но я пробовал одно и то же упражнение в командной строке Windows и тот же результат. Что мне здесь не хватает. Мне просто нужно запускать свои программы с Windows Java с полным классом классов?

ответ

1

Решение: при настройке пути в Cygwin с использованием Windows-версии Java вам необходимо использовать служебную программу cygpath с параметрами -wp, чтобы преобразовать пути стиля Unix к путям Windows.

[~/tmp]# java -cp `cygpath -wp ./bin` launcher.PrintClasspath 
/C:/Cygwin/home/user/tmp/bin/ 

(с помощью this)