Вопрос по eclipse, java – Как использовать классы в ссылочных библиотеках в Eclipse

6

Я импортировал файл algs4.jar как библиотеку со ссылками, как показано выше. Кажется, все в порядке, но я не могу использовать или получить доступ к любому из классов в библиотеке.

Отсутствует ли оператор импорта, который мне не хватает?

Ссылка на изображение:

Обратите внимание, как я пытаюсь использоватьBinarySearch из указанной библиотеки, но он не предлагает мне возможность использовать или импортировать ее.

Ты можешь сделатьctrl+shift+o и затмение добавит необходимый импорт. Из вашей ошибки похоже, что вы пропустили банку, содержащуюBinarySearch класс в пути сборки. CoolBeans
У меня та же проблема ... с тем же algs4.jar :)) Adrian B

Ваш Ответ

5   ответов
1

что все классы в jar-файлах содержатся в пакете по умолчанию.

Если ваши классы содержатся в пакете, они не будут доступны напрямую.

Я отправляю этот ответ, потому что я прохожу курс по алгоритмам, к которому относятся эти файлы jar, и это было причиной того, что моя программа не работала.

Это правильный ответ. Занятия вdefault пакет не доступен классам в других пакетах. Это не имеет никакого отношения к тому, чтобы быть в библиотеке ссылок.
0

BinarySearch не может быть создан (частный конструктор). Используйте статический методBinarySearch.rank(int key, int[] array)

Во-вторых, вы можете получить доступ к BinarySearch только изdefault package

В-третьих, как насчетArrays.binarySearch(array, key) ?

0

вам необходимо скачать упакованную версию библиотеки. См. Раздел Q & A в нижней части этой веб-страницы. http://introcs.cs.princeton.edu/java/stdlib/

Q. If I use a named package to structure my code, the compiler can no longer access the libraries in stdlib.jar. Why not?

A. The libraries in stdlib.jar are in the "default" package. In Java, you can't access classes in the default package from a named package. If you need to use our libraries with a named package, you can use the packaged version stdlib-package.jar.

6

Это стандартная библиотека или кто-то создал ее сам и дал вам?

Проблема классоваяBinarySearch вdefault пакет. Вы не сможете его импортировать. Если эта библиотека создана вами или кем-либо из ваших друзей, вам нужно попросить друга переместить все классы из пакета по умолчанию в хорошее пространство имен, а затем заново создать jar.

Если класс доступен,ctr + shift + o должен импортировать класс.

@jeffstern - Вы не можете просто разархивировать и переместить.class файлы. Вам нужен источник. Для каждого.java Файл измените объявление пакета на что-то подходящее, а затем экспортируйте как jar. Существующий.class файлы все еще имеют старое объявление пакета, т.е.default, Перемещение их в нужный пакет не изменит объявление пакета, и, следовательно, ваш импорт не будет работать.
Мм да, это имеет смысл. Я вернусь к первоначальному создателю библиотеки и посмотрю, смогут ли они воссоздать ее со стандартной структурой пакета. Спасибо. jeffstern
Это то, о чем я начал думать. Поэтому я распаковал банку и добавил ее в пакет. Теперь я могу использовать оператор импорта («com.package. *») И даже создать новую ссылку на класс («BinarySearch bs = new BinarySearch ()». Однако во время выполнения я получаю ClassNotFoundException , jeffstern
Кроме того, я также получаю это сообщение об ошибке:Exception in thread "main" java.lang.NoClassDefFoundError jeffstern
5

Алгоритмы Класс через Coursera, который использует справочную библиотеку algs4.jar.

The Problem:

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

The Solution

Все классы в вашем проекте должны быть в пакете по умолчанию, в противном случае справочные библиотеки (которые находятся в пакете по умолчанию) не будут распознаны. Классы вашего проекта должны находиться в каталоге src, и вы не должны объявлять пакет в начале ваших файлов .java. Кроме того, вы также должны убедиться, что выдобавили справочные библиотеки к вашему пути сборки.

Похожие вопросы