2016-05-09 5 views
0

Эта, казалось бы, простая проблема - это нагнать меня. У меня есть банка с набором зависимостей, которые, похоже, не могут работать в Linux. Все банки и сценарий находятся в одном каталоге.unix java classpath cp добавление

Это один поднимает и пытается запустить мой основной класс

java -cp MyJar.jar com.mylib.MyMainClass 

, но, конечно, он бросает ClassNotFoundException на одном из классов зависимостей. Затем я пытаюсь добавить одну из зависимостей, как так

java -cp MyJar.jar:MyDependencyJar.jar com.mylib.MyMainClass 

Тогда он говорит ClassNotFoundException для com.mylib.MyMainClass!

Я также попытался это с теми же проблемами различных

java -cp . com.mylib.MyMainClass 

и это

java -cp *.jar com.mylib.MyMainClass 

и это

java -cp .:*.jar com.mylib.MyMainClass 

Любые идеи, пожалуйста?

+0

Если 'com.mylib.MyMainClass' находится в' MyJar.jar' и всех классах зависимостей в 'MyDependencyJar.jar', тогда' java -cp MyJar.jar: MyDependencyJar.jar com.mylib.MyMainClass' должен работать. Что еще находится в текущем каталоге? – SubOptimal

+0

Да, это то, что я думал и предполагал. Однако это упрямо не сработало. Только ввод всех имен пути перед каждой зависимостью в соответствии с первым ответом. Я очень удивлен этим, но там это .. –

ответ

0

Попробуйте это:

java -cp /path/to/jar1.jar:/path/to/jar2.jar:. com.mylib.MyMainClass 

Обратите внимание, что вы не должны опускать в путь к классам, которые представляют текущий рабочий каталог, что окончательное ., потому что с помощью -cp будет превалировать ваш предыдущий параметр pathpath.

+0

Вы ** можете ** использовать подстановочный шаблон в пути к классам, например 'java -cp/path/to/* :. com.mylib.MyMainClass'. При этом все файлы Jar в '/ path/to /' будут добавлены в путь к классам. – SubOptimal

+0

@SubOptimal Да, вы правы. Моя вина. Я отредактирую ответ. – walkerlala

0

Вы должны запустить эту команду в каталоге, который является родителем com/mylib. Я предполагаю, что MyMainClass.class, MyJar.jar и MyDependencyJar.jar все отображаются в com/mylib.

Попробуйте это:

java -cp .:MyJar.jar:MyDependencyJar.jar com.mylib.MyMainClass 

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

  • Нет связанных вопросов^_^