2013-04-23 3 views
-1

Я работаю над eclipse, и мне нужно использовать внешнюю библиотеку. Например Jsoup и JXL.java.lang.NoClassDefFoundError. Класс не найден во время выполнения.

Теперь, что я сделал до сих пор: сначала создала папку «lib» в моей папке проекта. Затем в eclipse щелкните по свойствам проекта, вкладке «Библиотеки», добавьте внешнюю банку и добавьте банку в папку lib.

Так что это решение моей проблемы с компиляцией. Теперь, когда я запускаю программу (я иду к проекту/bin и в консоли выполнить: Java ProgramName, я получаю

java.lang.NoClassDefFoundError: 

Теперь тестирования, я добавил файл Jar в папку, где находится Main.java и Теперь, я был в состоянии запустить программу, выполнив следующие действия:.

javac -classpath ./path/to/jar Main.java 
java -classpath ./path/to/jar:. Main 

И это работает

Итак, первое, что приходит на ум, что я должен сказать Java, где найти соответствующие библиотеки Если это правильно? Как это сделать?

java -cp ???(dont know what to put here) 

Но более того. У меня другая проблема. Я пишу эту программу на компьютере, но я собираюсь использовать ее в других, которые, вероятно, не имеют этих библиотек. Как решить эту проблему?

+0

У вас уже есть аналогичный вопрос. Вы пытались поместить библиотеку в classpath сервера приложений, как я уже упоминал здесь: http://stackoverflow.com/a/16149435/1430055? –

+0

И как вы будете ссылаться на методы других классов библиотек, которые отсутствуют на другом компьютере, без копирования файлов jar на другой компьютер? –

ответ

0

Я хотел бы использовать что-то вроде следующего:

java -cp myjar.jar;lib/*.jar com.foo.bar.MyClass

Это добавляет не только мою баночку к классам, но те, в каталоге lib, а также.

Если вы хотите запустить свою банку на другом компьютере, вам понадобится , вы не можете иметь свою банку. Почему бы просто не упаковать каталог lib вместе с ним?

+0

Это может быть очень глупо, но у меня возникли проблемы с использованием команды -cp. Я использовал вашу команду. Но это заставило меня ошибиться. Он говорит, что разрешение отклонено – Alessandroempire

0

Чтобы получить программу для запуска у вас есть два пути, чтобы беспокоиться о

  1. Пути к файлам фляга, которые ваши приложения зависимости (например, jsoup.jar) (позволяет называть эту ОМТ)
  2. путь к каталогу, содержащему классы вашего приложения (назовём это классы)

общий вид командной строки вам нужно:

java -cp lib/jsoup.jar:classes Main 

Если у вас есть LIBS

java -cp lib/jsoup.jar:lib/jxl.jar:classes Main 

общая нота на упаковку приложения для выпуска на другие компьютеры. Возможно, вы захотите рассмотреть возможность создания банки своего собственного приложения, возможно, лучше всего использовать с помощью http://ant.apache.org/manual/Tasks/jar.html

Другой вариант - создать «одну банку», которая делает одну большую банку, объединяющую все классы, которые вам нужны из ваших библиотек и все классы в вашем приложении. Затем вы можете сделать исполняемый файл jar для приятного из коробки решения.Посмотрите на http://one-jar.sourceforge.net/ и https://code.google.com/p/jarjar/

+0

Первое, что мне нужно сделать, - это запустить его. У меня возникают проблемы с использованием java -cp – Alessandroempire

+0

вы можете вставить точную командную строку, которую используете? –

+0

Я использую: java -cp ../lib/jxl-2.6.jar:classes Главная, но она говорит Ошибка: не удалось найти или загрузить основной класс Main – Alessandroempire

0

, если у вас есть эта структура:

project folder 
... code 
... libs 

затем из папки с кодом:

javac -cp .;../libs/*.jar yourmainclass.java 
java -cp .;../libs/*.jar yourmainclass 

Когда вам нужно скомпилировать и запустить этот проект, принять все и сделать то же самое на другой машине.

+0

Хорошо. Я в папке с кодом и выполняю то, что вы написали, но я получаю сообщение об ошибке. Очень странно. Хотите опубликовать его здесь? – Alessandroempire

+0

Это то, что я получаю: Alessandro @ ALC: ~/Java/Trabajo/ЦСИ $ Javac -cp; ../ Библиотека/* баночка Main.java Javac:.. Нет исходных файлов Использование: Javac <источник файлы> использовать -help для списка возможных опций bash: ../lib/jxl-2.6.jar: Разрешение отклонено – Alessandroempire

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