2016-12-22 7 views

ответ

0

классы находятся в пакете по умолчанию. Согласно this answer, невозможно импортировать классы из пакета по умолчанию. Таким образом, их нужно перенести в другой пакет или использовать рефлексию.

+0

Вы имеете в виду файл под моим проектом и из пакета src нельзя использовать напрямую, если не отражено? –

+0

Я не имею в виду каталог 'src', но каталоги внутри него, которые представляют пакеты Java, а также объявляются в верхней части' java'-файла. Должен быть такой пакет, к которому принадлежит класс. Если не будет использоваться нестандартный пакет по умолчанию. Каталог 'src' содержит исходный код. Он не существует в jar-файле, который построен из исходного кода. – mm759

0

Вы вызываете метод из класса, а не из пакета.
Вам не нужно указывать банку, когда вы вызываете метод из принадлежащего ему класса. Важно то, что ваша банка находится в пути к классу.
На скриншоте, если lib входит в состав папок для классов, вы можете импортировать и использовать классы из него в своем коде.

Здесь классы вашей банки используют пакет по умолчанию (без имени пакета), который кажется странным для сторонней библиотеки. Пакет по умолчанию не рекомендуется, поскольку он не позволяет естественным образом ссылаться и использовать классы архива из кода клиента.
Я не уверен, что вы используете правильную версию банки.
Посмотрите, что:

http://grepcode.com/snapshot/repo1.maven.org/maven2/com.googlecode.princeton-java-introduction/stdlib/1.0.1

Это содержит классы в edu.princeton.cs пакете:

С пакетом, вы могли бы заявить об этом:

Например:

Вы могли бы создать класс как это и использовать BinaryIn:

package main; 
import edu.princeton.cs.BinaryIn; 

public class MyClass(){ 
    public static void main(String args[]){ 
    BinaryIn in = new BinaryIn(); 
    } 
} 
+0

Спасибо. Я предполагаю, что, когда я использую класс в пакете по умолчанию, мне не нужно импортировать пакет по умолчанию. Поскольку в моей среде IDE (intellij ideal14) не было никаких ошибок, оно представляет собой правильное объявление, но я не смог чтобы запустить его. И спасибо за ваш правильный код. Но я все еще хочу знать, как он может работать в моем коде. (в следующий раз, когда я изменюсь ...) –

+0

Это именно ваша ошибка при запуске rhe-класса, и вы можете отправить класс? – davidxxx

+0

StdIn.class.getPackage(). GetName(); и консоль: Исключение в потоке «main» java.lang.NullPointerException.I можно понять, что StdIn можно найти, но он подключен, и я могу нажать ctrl и нажать «Stdln», чтобы получить его исходный код. –