Справка с пакетами в Java - импорт не работает

Вы можете найти ответ, который вы хотите найти в cppreference .

При использовании сразу после ввода с разделителями-пробелами, например. после int n; std::cin >> n;, getline потребляет символ конца, оставленный на входном потоке оператором >>, и немедленно возвращается. Общее решение состоит в том, чтобы игнорировать все оставшиеся символы в строке ввода с cin.ignore(std::numeric_limits::max(), '\n'); перед переключением на линейно-ориентированный вход.

blockquote>

29
задан Tim 10 March 2009 в 19:34
поделиться

5 ответов

Да, это - проблема пути к классу. Необходимо сказать компилятору и времени выполнения, что каталог, где .class живые файлы часть ПУТИ К КЛАССУ. Каталог, который необходимо добавить, является родителем "com" каталога в начале структуры пакета.

Вы делаете это использование - аргумент пути к классу и в пользу javac.exe и в пользу java.exe.

Должен также спросить, как сторонние классы, которые Вы используете, упаковываются. Если бы они находятся в JAR, и я рекомендовал бы иметь их в одном, Вы добавляете .jar файл к пути к классу:

java -classpath .;company.jar foo.bar.baz.YourClass

Google для "пути к классу Java". Это найдет ссылки как это .

Еще одна вещь: "импорт" не загружает классы. Все это делает это, сохраняет Вас ввод. При включении оператора импорта Вы не должны использовать полностью разрешенное имя класса в своем коде - можно ввести "Нечто" вместо "com.company.thing. Нечто". Это - все, что это делает.

10
ответ дан duffymo 14 October 2019 в 07:28
поделиться

Хорошо, просто для уточнения вещи, которые были уже отправлены.

Вы должны иметь каталог com, содержа каталог company, содержа каталог example, содержа файл MyClass.java.

От папки, содержащей com, работать:

$ javac com\company\example\MyClass.java

Тогда:

$ java com.company.example.MyClass
Hello from MyClass!

Они должны оба быть сделаны от корня исходного дерева. Иначе, javac и java не будет в состоянии найти любые другие пакеты (на самом деле, java даже не был бы в состоянии работать MyClass).

А короткий пример

я создал папки "testpackage" и "testpackage2". Внутри testpackage, я создал TestPackageClass.java, содержащий следующий код:

package testpackage;

import testpackage2.MyClass;

public class TestPackageClass {
    public static void main(String[] args) {
        System.out.println("Hello from testpackage.TestPackageClass!");
        System.out.println("Now accessing " + MyClass.NAME);
    }
}

Внутренняя часть testpackage2, я создал MyClass.java, содержащий следующий код:

package testpackage2;
public class MyClass {
    public static String NAME = "testpackage2.MyClass";
}

Из каталога, содержащего две новых папки, я работал:

C:\examples>javac testpackage\*.java

C:\examples>javac testpackage2\*.java

Тогда:

C:\examples>java testpackage.TestPackageClass
Hello from testpackage.TestPackageClass!
Now accessing testpackage2.MyClass

, который делает вещи немного более ясными?

47
ответ дан Michael Myers 14 October 2019 в 07:28
поделиться

Вы получили набор хороших ответов, таким образом, я просто выведу предложение. Если Вы собираетесь быть работой над этим проектом больше 2 дней, загрузите затмение или netbeans и разработайте Ваш проект там.

, Если Вы не обычно программист Java, тогда справка, она даст Вам, будет неоценимо.

Это не стоит 1/2 загрузки/установки часа, если Вы только проводите 2 часа на него.

у Обоих есть горячие клавиши/пункты меню для "Фиксации импорта", с этим Вам никогда не придется волноваться об импорте снова.

5
ответ дан Bill K 14 October 2019 в 07:28
поделиться

Это кажется, что Вы на правильном пути с Вашей структурой каталогов. При компиляции зависимого кода определите -classpath аргумент javac. Используйте родитель каталог com каталог, где com, в свою очередь, содержит company/thing/YourClass.class

5
ответ дан erickson 14 October 2019 в 07:28
поделиться

Стандартный Java classloader является сторонником структуры каталогов. Каждая запись в пути к классу является каталогом или файлом банки (или zip-файл, действительно), который это тогда ищет данный файл класса. Например, если Ваш путь к классу ".; my.jar", это будет искать com.example. Нечто в следующих местоположениях:

./com/example/
my.jar:/com/example/

таким образом, это посмотрит в подкаталоге, который имеет 'измененное название' пакета, где'.' заменяется разделителем файлов.

кроме того, это примечательно, что Вы не можете вложить .jar файлы.

3
ответ дан krakatoa 14 October 2019 в 07:28
поделиться
Другие вопросы по тегам:

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