2013-08-07 2 views
1

классам Я бегу Windows 7 с Java версии 1.6.0_31-b05 на моем компьютере, и сети моего computerlab в Linux (Fedora, возможно, версия 13) работает под управлением Java версии 1.6.0_35 -b10.Linux Javac команда erroring на подстановочные

У меня есть каталог C:\myproject (и др.) С src, lib и bin в подкаталогах.

  • Папка src содержит весь исходный код в древовидной структуре, которая соответствует пакетам java.
  • В каталоге lib содержатся файлы JAR.

Я воссоздал дерево в Linux под ../myproject (и др.).

  • При попытке скомпилировать в DOS, из каталога ..\myproject\src, с помощью этой команды ниже, она отлично работает:

    javac -cp ".;../bin;../lib/*" -d ../bin org/unlv/schillerlab/motif_diversity/step02/*.java 
    
  • При попытке компиляции в Linux, из каталога ../myproject/src, Я получаю сообщение неправильный путь к классам: ../lib/*:

    javac -cp ".:../bin:../lib/*" -d ../bin org/unlv/schillerlab/motif_diversity/step02/*.java 
    

Доступ к компьютерной сети возможен как из DOS, так и из Linux. В Linux я впервые создал каталоги ../myproject/src, ../myproject/lib и ../myproject/bin. Затем, в DOS, я скопировал необходимые файлы с моего C дисков на ../myproject/src01 и ../myproject/lib01. Затем в Linux я использовал команду cp -av для заполнения src и lib от src01 и lib01, соответственно. Поэтому я не думаю, что есть проблема с разрешениями Linux.

В Linux, с сайта ../myproject/src, выпуск ls ../lib показывает, что каталог (sibling) lib содержит файлы JAR. Я также попробовал команду Linux javac с абсолютным путем к каталогу lib; нет радости.
Аналогично, я попытался удалить цитату (") пометки из статьи -cp; нет радости.

Возможно, проблема в том, что я запускаю старую версию Fedora? Если нет, есть ли у кого-то гипотеза относительно проблемы?

ответ

1

Расширение подстановочных знаков может вести себя по-разному в Linux, чем в Windows: в Unix-подобных системах обязанностью оболочки является выполнение подстановочного расширения до аргументы передаются исполняемому файлу; на Windows каждая их программа обязана делать подстановочные расширения (если вообще). В сомнении замените javac на echo, чтобы увидеть, как разворачиваются шаблоны! И вы должны использовать опцию -sourcepath для определения местоположения источника (не могу сказать, действительно ли это работает, должно быть, прошло более 10 лет с тех пор, как я последний раз использовал это ...)

+0

echo ../ lib/* действительно перечисляет все файлы jar. Кроме того, учитывая все, что я прочитал +, что команда работает в Dos, я думаю, что в команде javac Linux указание работы каталога файла jar (т. Е. ../Lib/*) как части параметра classpath должно работать. – user2661923

+0

В Linux (по крайней мере, в Bash) расширение подстановки не происходит внутри "". Echo "../lib/*" не будет делать то же самое, что и echo ../lib/*. Тем не менее, похоже, что любая форма должна работать, согласно документации. Вы запускаете javac из своего каталога src /? – Sbodd

+0

Итак, попытка в Linux с метками кавычек _should_ (и делает) терпит неудачу. Чтобы быть осторожным, я просто повторил, без кавычек: javac -cp.: ../ bin: ../ lib/* -d ../bin org/unlv/schillerlab/motif_diversity/step02/*. java Неверный путь к классу: ../lib/* сохраняется. Да, я запускаю javac из моего каталога src. – user2661923

Смежные вопросы